Alasan mengabaikan argumen ini adalah generasi permanen telah dihapus di HotSpot untuk JDK8 karena kelemahan berikut
- Memperbaiki ukuran saat startup - sulit diatur.
- Jenis Hotspot internal adalah objek Java: Dapat bergerak dengan GC penuh, buram, tidak diketik dengan kuat dan sulit di-debug, diperlukan meta-metadata.
- Sederhanakan koleksi lengkap: Iterator khusus untuk metadata untuk setiap kolektor
- Ingin membatalkan alokasi data kelas secara bersamaan dan tidak selama jeda GC
- Aktifkan peningkatan di masa mendatang yang dibatasi oleh PermGen.
Ruang Generasi Permanen (PermGen) telah sepenuhnya dihapus dan semacam digantikan oleh ruang baru yang disebut Metaspace. Konsekuensi dari penghapusan PermGen adalah bahwa jelas argumen PermSize dan MaxPermSize JVM diabaikan dan Anda tidak akan pernah mendapatkan java.lang.OutOfMemoryError: PermGen error.
Keuntungan dari MetaSpace
- Manfaatkan properti Spesifikasi Bahasa Jawa: Kelas dan masa hidup metadata yang sesuai dengan kelas loader
- Per area penyimpanan loader - Metaspace
- Alokasi linier saja
- Tidak ada reklamasi individu (kecuali untuk RedefineClasses dan kegagalan pemuatan kelas)
- Tidak ada pemindaian GC atau pemadatan
- Tidak ada relokasi untuk objek metaspace
Tuning Metaspace
Ukuran metaspace maksimum dapat diatur menggunakan flag -XX: MaxMetaspaceSize, dan standarnya tidak terbatas, yang berarti hanya memori sistem Anda yang menjadi batasnya. The -XX: Flag tuning MetaspaceSize menentukan ukuran awal metaspace Jika Anda tidak menentukan flag ini, Metaspace akan secara dinamis mengubah ukuran tergantung dari permintaan aplikasi saat runtime.
Perubahan memungkinkan pengoptimalan dan fitur lainnya di masa mendatang
- Berbagi data kelas aplikasi
- Optimalisasi koleksi muda, pembongkaran kelas G1
- Pengurangan ukuran metadata dan proyek jejak kaki JVM internal
Ada peningkatan kinerja GC juga. Lebih detail