1. 程式人生 > >學習Weblogic和JAVA的一些筆記-Xms Xmx PermSize MaxPermSize的含義

學習Weblogic和JAVA的一些筆記-Xms Xmx PermSize MaxPermSize的含義


 JVM使用-XX:PermSize設定非堆記憶體初始值,預設是實體記憶體的1/64;由XX:MaxPermSize設定最大非堆記憶體的大小,預設是實體記憶體的1/4。(還有一說:MaxPermSize預設值和-server -client選項相關,
 -server選項下預設MaxPermSize為64m,-client選項下預設MaxPermSize為32m。這個我沒有實驗。)
 上面錯誤資訊中的PermGen space的全稱是Permanent Generation space,是指記憶體的永久儲存區域。還沒有弄明白PermGen space是屬於非堆記憶體,還是就是非堆記憶體,但至少是屬於了。
XX:MaxPermSize設定過小會導致java.lang.OutOfMemoryError: PermGen space 就是記憶體益出。 
說說為什麼會記憶體益出: 
(1)這一部分記憶體用於存放Class和Meta的資訊,Class在被 Load的時候被放入PermGen space區域,它和存放Instance的Heap區域不同。 
(2)GC(Garbage Collection)不會在主程式執行期對PermGen space進行清理,所以如果你的APP會LOAD很多CLASS 的話,就很可能出現PermGen space錯誤。
  這種錯誤常見在web伺服器對JSP進行pre compile的時候。