Secara khusus, mengapa itu membantu untuk memperbaiki masalah PermGen OutOfMemoryError?
Juga, poin bonus untuk jawaban yang mengarahkan saya ke dokumentasi tentang argumen JVM ...
java
jvm
jvm-arguments
Geoff
sumber
sumber
Jawaban:
Ruang permanen adalah tempat kelas, metode, string yang diinternalisasi, dan objek serupa yang digunakan oleh VM disimpan dan tidak pernah dialokasikan (karena itu namanya).
Artikel Oracle ini secara ringkas menyajikan kerja dan parameterisasi dari HotSpot GC dan menyarankan Anda untuk menambah ruang ini jika Anda memuat banyak kelas (ini biasanya terjadi pada server aplikasi dan beberapa IDE seperti Eclipse):
Perhatikan bahwa dokumentasi Oracle lainnya ini mencantumkan argumen HotSpot lainnya.
Pembaruan: Dimulai dengan Java 8, ruang permgen dan pengaturan ini hilang. Model memori yang digunakan untuk kelas dan metode yang dimuat berbeda dan tidak terbatas (dengan pengaturan default). Anda seharusnya tidak melihat kesalahan ini lagi.
sumber
-XX:PermSize -XX:MaxPermSize
digunakan untuk mengatur ukuran untuk Generasi Permanen.Generasi Permanen: Generasi Permanen adalah tempat file kelas disimpan. Ini adalah hasil dari kelas yang dikompilasi dan halaman JSP. Jika ruang ini penuh, itu memicu Koleksi Sampah Penuh. Jika Full Garbage Collection tidak dapat membersihkan kelas lama yang tidak direferensikan dan tidak ada ruang tersisa untuk memperluas Ruang Permanen, kesalahan Out-of-Memory (OOME) dilemparkan dan JVM akan crash.
sumber
Di Java 8 parameter itu biasanya digunakan untuk mencetak pesan peringatan seperti ini:
Alasan mengapa Anda mendapatkan pesan ini di Java 8 adalah karena Permgen telah digantikan oleh Metaspace untuk mengatasi beberapa kelemahan PermGen (karena Anda dapat melihat sendiri, salah satu kelemahannya adalah bahwa ia memiliki ukuran tetap).
FYI: artikel tentang Metaspace: http://java-latte.blogspot.in/2014/03/metaspace-in-java-8.html
sumber