Saya tahu apa itu PermGen, untuk apa digunakan, mengapa gagal, bagaimana cara meningkatkannya, dll.
Yang tidak saya ketahui adalah apa sebenarnya kepanjangan dari PermGen. Permanen ... Gen ... sesuatu?
Adakah yang tahu apa sebenarnya kepanjangan dari PermGen?
Jawaban:
Generasi Permanen. Detailnya tentu saja spesifik untuk penerapannya.
Singkatnya, ini berisi objek Java yang terkait dengan kelas dan string internal. Dalam implementasi klien Sun dengan berbagi aktif,
classes.jsa
memori dipetakan untuk membentuk data awal, dengan sekitar setengahnya hanya untuk membaca dan setengah menyalin-saat-menulis.Benda-benda Jawa yang hanya tua disimpan di Generasi Bertenur.
sumber
PermGen digunakan oleh JVM untuk menampung kelas yang dimuat. Anda dapat meningkatkannya dengan menggunakan:
-XX:MaxPermSize=384m
jika Anda menggunakan Sun JVM atau OpenJDK.
Jadi, jika Anda mendapatkan OutOfMemoryException: PermGen, Anda perlu memperbesar PermGen atau Anda mungkin mengalami masalah pemuat kelas.
sumber
Generasi Permanen. Lihat panduan penyetelan java GC untuk detail selengkapnya tentang pengumpul sampah.
sumber
Tidak benar-benar terkait dengan pertanyaan asli, tetapi mungkin seseorang akan merasa berguna. PermGen memang area dalam memori tempat Java digunakan untuk menyimpan kelas-kelasnya. Jadi, banyak dari kita pernah menemukan OOM di PermGen, jika ada, misalnya banyak kelas.
Sejak Java 8, area PermGen telah digantikan oleh area MetaSpace, yang lebih efisien dan tidak terbatas secara default (atau lebih tepatnya - dibatasi oleh jumlah memori asli, tergantung pada 32 atau 64 bit jvm dan ketersediaan memori virtual OS). Namun dimungkinkan untuk menyetelnya dalam beberapa cara, misalnya dengan menentukan batas maksimum untuk area tersebut. Anda dapat menemukan lebih banyak informasi berguna di entri blog ini .
sumber
PermGen adalah singkatan dari Permanent Generation .
Berikut adalah uraian singkat tentang DDJ
sumber
Generasi permanen
sumber
Jika saya ingat dengan benar, gen tersebut berarti generasi, seperti pada pengumpul sampah generasi (yang memperlakukan objek yang lebih muda secara berbeda dari objek paruh baya dan objek "permanen"). Prinsip lokalitas menunjukkan bahwa objek yang baru dibuat akan dihapus terlebih dahulu.
sumber
Permgen adalah singkatan dari Permanent Generation. Ini adalah salah satu area memori JVM. Itu bagian dari Heap dengan ukuran tetap dengan menggunakan bendera yang disebut MaxPermSize.
Kenapa namanya "PermGen"?
Permgen ini dinamai pada masa awal Jawa. Induk permgen menyimpan semua data meta dari kelas yang dimuat. Tetapi masalahnya adalah bahwa setelah kelas dimuat, itu akan tetap berada di JVM sampai JVM dimatikan. Jadi pilihlah permgen nama. Tapi kemudian, pembebanan dinamis kelas muncul tapi namanya tidak diubah. Tetapi dengan Java 8 , mereka telah mengatasi masalah itu juga. Sekarang permagen berganti nama menjadi MetaSpace dengan ukuran memori dinamis.
sumber