Penyebab kesalahan PermGen OutOfMemory adalah aplikasi menebus kembali. Penyebab mendasar adalah bocor objek Class di PermGen dari redeploys.
Tentu saja, solusinya adalah memulai kembali JVM setelah sejumlah redeploys.
Ini adalah masalah yang sangat sulit untuk dipecahkan secara total, walaupun dengan sedikit sleuthing Anda sering dapat melakukan perbaikan besar. Di sinilah Anda mulai: Ketika aplikasi web Anda dihentikan, pastikan bahwa:
- semua utas yang Anda mulai dihentikan
- semua ThreadPools yang Anda mulai dimatikan
- semua referensi statis yang dapat Anda lepaskan dirilis
Ini adalah beberapa hal yang dapat menyebabkan objek Class terjebak di PermGen.
Juga, perhatikan bahwa tidak semua JVM (atau semua versi JVM) akan objek Kelas GC di PermGen. Jika Anda menjalankan JVM atau versi JVM yang tidak akan objek Kelas GC di PermGen, maka satu-satunya pilihan Anda adalah me-restart JVM setelah sejumlah redeploys. Ini mungkin tidak berlaku untuk Anda, mengingat opsi JVM yang Anda sebutkan.