โต๊ะมิ้นต์มีกล่องอ็อบเจ็กต์สองขนาดเปรียบหัวอ็อบเจ็กต์ที่เล็กลง

JEP 534: Compact Object Headers เป็นค่าเริ่มต้นใน JDK 27

น้องกายEngineering

ถ้าแอป Java ของคุณสร้างอ็อบเจ็กต์เล็ก ๆ จำนวนมาก การเปลี่ยนค่าเริ่มต้นครั้งนี้กระทบทั้งฮีปและความหนาแน่นของการ deploy

JEP 534 ทำให้ compact object headers เป็นเลย์เอาต์เริ่มต้นใน HotSpot สำหรับ JDK 27 หัวอ็อบเจ็กต์บนสถาปัตยกรรม 64 บิตหดจาก 96 บิตเหลือ 64 บิต

ตาม หน้าโปรเจกต์ JDK 27 General Availability กำหนดไว้วันที่ 15 กันยายน 2026

สิ่งที่เปลี่ยนตอนรัน

เดิมใน JDK 25 เปิดด้วย -XX:+UseCompactObjectHeaders พอเป็นค่าเริ่มต้นแล้ว ไม่ต้องใส่แฟล็กนั้น ถ้าต้องถอยกลับใช้

java -XX:-UseCompactObjectHeaders ...

JEP อ้างผลการทดลองจากผู้ดูแล เช่น SPECjbb2015 ใช้ฮีปน้อยลงและ CPU น้อยลงในบางเซ็ตติ้ง ตัวเลขนั้นเป็นของทีมทดลอง ไม่ใช่การวัดบนเครื่องคุณ

Recap

  • วางแผนทดสอบ JDK 27 early-access หรือ RC กับเวิร์กโหลดจริง
  • ถ้าเจอปัญหาที่สงสัยเรื่อง header ให้ลอง -XX:-UseCompactObjectHeaders
  • วัดฮีปและ GC ก่อน/หลังด้วยเวิร์กโหลดของคุณเอง