不能一味加內存解決問題,最好按期檢查一下程序對內存的消耗,以免潛 在的內存溢出。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左右。程序
PermGen內存大約在100M左右。PermGen不要浪費太多,由於這部 份內存大約等於WAR的大小+大約20%的增加,取決於你使用的framework。im
使用過程當中,內存也沒有消耗過多,通常在400M之下。項目
備註:
我在Maven Build的JRE和JRE的Default VM Arguments裏都設置了,
彷佛在後者纔有效, 設置以下
-hotspot -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=256m