Penjelasan java.lang.OutOfMemoryError: PermGen space

Bagi yang kena pertanyaan kok sering exception java.lang.OutOfMemoryError: PermGen space, neh ada penjelasan logis dari Samuel Franklyn milis JUG Indonesia. Mudah-mudahan bermanfaat.

Hampir pasti kamu pakai Spring+Hibernate dan masih dalam tahap development. Errornya: Out of memory error: PermGen space kan? Hal ini terjadi karena byte code manipulation yang dilakukan oleh Spring dan Hibernate. Ini menyebabkan jumlah class yang di load berlipat ganda. Jumlah class yang banyak menghabiskan memory PermGen. Ini terjadi kalau redeploy berulang-ulang. Ini masalah klasik di GlassFish. Cara mengatasinya? Perbesar memori yang dialokasi ke PermGen dengan setting JVM -XX:PermSize= 256m -XX:MaxPermSize= 256m lalu perbesar alokasi memori untuk GlassFish lewat setting jvm -Xmx1024m.

Tapi kalau kamu sudah production maka hal ini nggak akan terjadi. Selama aplikasi nggak di redeploy berulang-ulang maka selama aplikasi kamu nggak ada memory leak maka GlassFish akan tetap stabil dan pemakaian memorynya konstan.

Kalau di production kamu perlu redeploy di GlassFish maka langkah terbaik adalah undeploy. Matikan app server. Nyalakan lagi baru deploy lagi. Dengan cara ini nggak ada memory yang terpakai sia-sia oleh class proxy hasil ciptaan Spring dan Hibernate.

OutOfMemoryError dapat juga terjadi pada aplikasi java yang diinstall di BlackBerry maupun handphone biasa. Penyebabnya sama yaitu alokasi memory untuk meload modul-modul aplikasi tidak mencukupi sehingga terjadilah OutOfMemoryError. Hal ini agak sulit ditangani karena menyangkut sistem internal aplikasi dan jvm HP. Sarannya adalah menggunakan aplikasi java lain/versi yang lebih ringan dalam penggunaan memorynya.

Komentar

Postingan populer dari blog ini

Mercon Buaya