java.lang.OutOfMemoryError: PermGen space

Java的內存泄露:

Java的內存泄漏是指某些對象不再被應用程序使用,而垃圾收集器(Garbage Collector)卻沒能識別它們是“不再使用的”。

如果那些不使用的對象佔用堆(heap)空間足夠大,使得應用程序無法滿足下一次內存分配需求,就會導致OutOfMemoryError錯誤。


java.lang.OutOfMemoryError: PermGen space錯誤的可能原因:

1.永久代(PermGen)的空間不足

2.永久代內存泄漏


解決方法:

1.設置-XX:+CMSClassUnloadingEnabled(必須先設置-XX:+UseConcMarkSweepGC

這個參數表示在使用CMS垃圾回收機制的時候是否啓用類卸載功能。默認這個是設置爲不啓用的。如果啓用了CMSClassUnloadingEnabled,垃圾回收會清理持久代,移除不再使用的classes。

2.增加-XX:PermSize和-XX:MaxPermSize的大小

永久代初始值,默認是物理內存的1/64,永久代最大值,默認是物理內存的1/4。建議分別設置爲128、512。

3.排查內存泄露


應用程序遇到java.lang.OutOfMemoryError: PermGen space錯誤的原因很多,究其根本原因,大多數是由於object或程序的class loader加載的類的引用已經無用了導致的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章