標籤:outofmemoryerror:
JAVA_OPTS ,顧名思義,是用來設定JVM相關運行參數的變數。
JVM:JAVA_OPTS="-server -Xms2048m -Xmx2048m -Xss512k"
-server:一定要作為第一個參數,在多個CPU時效能佳
-Xms:初始Heap大小,使用的最小記憶體,cpu效能高時此值應設的大一些
-Xmx:java heap最大值,使用的最大記憶體
上面兩個值是分配JVM的最小和最大記憶體,取決於硬體實體記憶體的大小,建議均設為實體記憶體的一半。
-XX:PermSize:設定記憶體的永久儲存地區
-XX:MaxPermSize:設定最大記憶體的永久儲存地區
-XX:MaxNewSize:
-Xss 15120 這使得JBoss每增加一個線程(thread)就會立即消耗15M記憶體,而最佳值應該是128K,預設值好像是512k.
+XX:AggressiveHeap 會使得 Xms沒有意義。這個參數讓jvm忽略Xmx參數,瘋狂地吃完一個G實體記憶體,再吃盡一個G的swap。
-Xss:每個線程的Stack大小
-verbose:gc 現實垃圾收集資訊
-Xloggc:gc.log 指定垃圾收集記錄檔
-Xmn:young generation的heap大小,一般設定為Xmx的3、4分之一
-XX:+UseParNewGC :縮短minor收集的時間
-XX:+UseConcMarkSweepGC :縮短major收集的時間
提示:此選項在Heap Size 比較大而且Major收集時間較長的情況下使用更合適。
PermGen space的全稱是Permanent Generation space,是指記憶體的永久儲存地區OutOfMemoryError: PermGen space從表面上看就是記憶體益出,解決方案也一定是加大記憶體。說說為什麼會記憶體益出:這一部分用於存放Class和Meta的資訊,Class在被 Load的時候被放入PermGen space地區,它和和存放Instance的Heap地區不同,GC(Garbage Collection)不會在主程式運行期對PermGen space進行清理,所以如果你的APP會LOAD很多CLASS的話,就很可能出現PermGen space錯誤。這種錯誤常見在web伺服器對JSP進行pre compile的時候。改正方法:-Xms256m -Xmx256m -XX:MaxNewSize=256m -XX:MaxPermSize=256m 2、在tomcat中redeploy時出現outofmemory的錯誤. 可以有以下幾個方面的原因:
1,使用了proxool,因為proxool內部包含了一個老版本的cglib.
2, log4j,最好不用,只用common-logging
3, 老版本的cglib,快點更新到最新版。
4,更新到最新的hibernate3.2 3、
本文出自 “讓我men共同成長” 部落格,請務必保留此出處http://wujingfeng.blog.51cto.com/5725921/1679166
java OutOfMemoryError: