Penyingkiran PermGen dalam JDK 8: Mengapa Pilihan VM Diabaikan
Pengenalan
JDK 8 dibawakan perubahan ketara kepada seni bina Java Virtual Machine (JVM), termasuk penyingkiran Generasi Kekal (PermGen). Perubahan ini telah menjejaskan cara Eclipse dan aplikasi lain berinteraksi dengan JVM.
Isu
Apabila menjalankan Eclipse dalam JDK 8, pengguna mungkin menghadapi mesej amaran yang menunjukkan bahawa MaxPermSize Pilihan VM diabaikan. Mesej ini menimbulkan persoalan tentang sebab untuk membuang parameter ini.
Sebab untuk Mengabaikan MaxPermSize
Sebab untuk mengabaikan pilihan MaxPermSize VM berpunca daripada beberapa kelemahan yang dikaitkan dengan PermGen dalam JDK sebelumnya versi:
-
Saiz Tetap: PermGen mempunyai saiz tetap semasa permulaan, menjadikannya sukar untuk mengoptimumkan peruntukan memori untuk aplikasi dengan keperluan pemuatan kelas dinamik.
-
Jenis Hotspot Dalaman: Objek yang disimpan dalam PermGen ialah objek Java, yang membawa kepada potensi kebocoran memori disebabkan oleh kegigihan mereka merentasi kutipan sampah.
-
Koleksi Ringkas: Mengalih keluar PermGen dibenarkan untuk memudahkan kitaran pengumpulan sampah penuh, menghilangkan keperluan untuk iterator khas untuk metadata.
-
Deallocation Data Kelas Serentak: MetaSpace mendayakan serentak pengagihan data kelas di luar jeda GC, meningkatkan prestasi.
-
Penambahbaikan Masa Hadapan: Penghapusan PermGen membuka jalan untuk penambahbaikan dan pengoptimuman JVM pada masa hadapan yang sebelum ini dihadkan oleh kekangannya.
Metaspace: The Penggantian
Dalam JDK 8, PermGen telah digantikan oleh Metaspace, yang menawarkan beberapa kelebihan:
-
Afiniti Pemuat Kelas: Metaspace dikaitkan dengan khusus pemuat kelas, memastikan bahawa jangka hayat kelas sepadan dengan kitaran hayat yang sepadan pemuat.
-
Peruntukan Linear: Metaspace menggunakan peruntukan linear, memudahkan pengurusan memori.
-
Tiada Penambakan Individu: Metaspace tidak melakukan penambakan individu, kecuali untuk pentakrifan semula kelas dan kegagalan pemuatan, seterusnya mengurangkan atas kepala.
-
Tiada Imbasan atau Pemadatan GC: Objek metaspace tidak diimbas atau dipadatkan semasa kitaran pengumpulan sampah, meningkatkan prestasi.
-
Penalaan Dioptimumkan: Metaspace boleh ditala menggunakan bendera -XX:MaxMetaspaceSize dan -XX:MetaspaceSize, membenarkan pengurusan memori yang lebih fleksibel.
Kesimpulan
Penyingkiran PermGen dalam JDK 8 membawa manfaat prestasi dan kestabilan yang ketara kepada aplikasi Java. Walaupun pilihan VM MaxPermSize tidak lagi relevan, Metaspace menyediakan penyelesaian yang sangat optimum dan cekap untuk mengendalikan metadata aplikasi.
Atas ialah kandungan terperinci Mengapakah pilihan VM MaxPermSize diabaikan dalam JDK 8?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!