Caching Kelas Integer: Meneroka Julat -128 hingga 127
Kelas Integer dalam Java mempunyai cache yang mengoptimumkan prestasi dengan menyimpan dengan kerap nilai yang diminta. Walau bagaimanapun, julat khusus -128 hingga 127 yang dicache oleh Integer.valueOf() telah menimbulkan beberapa persoalan.
Mengapa Julat -128 hingga 127?
Julat ini ditakrifkan oleh Spesifikasi Bahasa Java (JLS), yang mewajibkan nilai int dan pendek dalam julat ini, apabila dimasukkan ke dalam objek Integer, sentiasa menghasilkan rujukan yang sama. Keperluan ini memastikan bahawa untuk nilai yang biasa digunakan, gelagat yang diingini dicapai tanpa menjejaskan prestasi pada peranti kecil.
Rasional Di Sebalik Julat Cache
Cache mengoptimumkan prestasi dengan mengurangkan overhed yang dikaitkan dengan memperuntukkan objek Integer baharu untuk nilai yang kerap digunakan. Ini amat berfaedah untuk senario biasa di mana nilai berangka cenderung berpusat di sekitar sifar, menjadikan integer dalam julat -128 hingga 127 kemungkinan calon untuk penggunaan berulang.
Caching Melangkaui Julat Yang Ditentukan
Walaupun JLS memerlukan caching dalam julat -128 hingga 127, pelaksanaan boleh memanjangkan julat ini untuk meningkatkan kecekapan. Pilihan JVM "-XX:AutoBoxCacheMax=" membolehkan pembangun menentukan saiz cache yang lebih besar, membenarkan caching nilai melebihi julat lalai. Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa ketersediaan pilihan ini mungkin berbeza-beza merentas pelaksanaan JVM yang berbeza.
Mengapa Abaikan Nilai Tertentu untuk Caching Permintaan Kerap?
JLS tidak berikan penjelasan muktamad mengapa ia menentukan julat khusus untuk caching. Walau bagaimanapun, ada kemungkinan faktor seperti pertukaran prestasi dan keperluan untuk menangani kod warisan mempengaruhi keputusan untuk menentukan julat tertentu dalam mana caching dijamin.
Atas ialah kandungan terperinci Mengapakah Cache Kelas Integer Java Hanya Nilai Antara -128 dan 127?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!