java.lang.OutOfMemoryError:Java heap space解決方法之一

不能一味加內存解決問題,最好按期檢查一下程序對內存的消耗,以免潛 在的內存溢出。ui

建議你們使用jvisualvm來監控JVM。(JDK自帶,命令行直 接打jvisualvm便可).net

必定要設置正確的JVM參數。我建議的JVM參數是:命令行

-Xmx512m -XX:PermSize=128m -XX:MaxPermSize=256m內存

即:最大512M heap,預留128M的permGen。千萬不要把permGen設置得過大,這樣會變相減小了heap的內存。get

事實上,項目啓動以後只須要少於400m 的heap + 不到100m的 permgen 內存.it

看下圖:監控

啓動完畢以後,heap高峯曾達到400M。而後收縮至280M左右。程序

 

1

PermGen內存大約在100M左右。PermGen不要浪費太多,由於這部 份內存大約等於WAR的大小+大約20%的增加,取決於你使用的framework。im

2

 

使用過程當中,內存也沒有消耗過多,通常在400M之下。項目

 3

 

備註:

image image

我在Maven Build的JRE和JRE的Default VM Arguments裏都設置了,

彷佛在後者纔有效, 設置以下

-hotspot -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=256m

相關文章
相關標籤/搜索