HeadlinesBriefing favicon HeadlinesBriefing.com

JDK 28: Optimisasi Kelas Nilai (JEP 401)

Hacker News •
×

Posting ini membahas fitur pratinjau di JDK 28, khususnya JEP 401, tonggak Valhalla utama yang diintegrasikan sebagai fitur pratinjau. Kelas nilai meningkatkan kemampuan untuk mengomunikasikan semantik program dan peluang optimisasi yang tersedia untuk JVM. Namun, keyakinan bahwa kelas biasa menyediakan lantai performa dan kelas nilai tidak bisa di bawahnya tidak berdasar.

Program dengan niat baik mungkin memaksa JVM untuk mengonversi antara representasi datar dan referensi saat metode berinteraksi, yang dapat membatalkan manfaat. Keuntungan optimisasi utama kelas nilai adalah melepaskan identitas, memungkinkan runtime memilih representasi yang sesuai, mendatarkan nilai untuk menghindari pengejaran pointer, dan menskalarkan komponen di register atau tumpukan. Analisis escape menjadi sepele tanpa persyaratan identitas.

Ketidakberubahan memungkinkan pelapisan; JEP 539, Inisialisasi Field Ketat, memungkinkan JVM mengandalkan field final yang diinisialisasi sebelum objek pembungkusnya menjadi dapat diamati. Karena field tersebut tidak dapat diperbarui nanti, JVM mungkin menggunakan tata letak datar non-atomik tanpa risiko penugasan terputus. Field yang dapat diubah harus mempertahankan penugasan bebas-putus.

Jika field yang dapat diubah berisi nilai terlalu besar untuk pembaruan datar atomik, JVM harus menggunakan tata letak referensi. Pertimbangkan record Four Longs dengan 32 byte payload; terlalu besar untuk pembaruan datar atomik. Tapi di record Envelope, payload adalah field final yang diinisialisasi dengan ketat, memungkinkan tata letak datar non-atomik.

Jika Envelope dapat diubah, tata letak kembali ke REGULAR untuk menjaga konsistensi.