2011年2月12日 星期六

PermGen Space

* 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



* java.lang.OutOfMemoryError: Java heap space
- 指java程式運行過程中, JVM可以調配使用的記憶體空間
- JVM在啟動的時候會自動設置Heap size的值,其初始空間(即-Xms)是實體記憶體的1/64,最大空間(-Xmx)是實體記憶體的1/4。
- 可以利用JVM提供的-Xmn -Xms -Xmx等選項可進行設置。Heap size 的大小是Young Generation 和Tenured Generaion 之和。

- 在JVM中如果98%的時間是用於GC且可用的Heap size 不足2%的時候將拋出此異常資訊。
- Heap Size 最大不要超過可用實體記憶體的80%,一般的要將-Xms和-Xmx選項設置為相同,而-Xmn為1/4的-Xmx值。
- 解決方法:手動設置Heap size



* Reference
- java.lang.OutOfMemoryError: PermGen space及其解決方法

沒有留言:

張貼留言