區分JVM虛擬機選項:Xms Xmx PermSize MaxPermSize
JVM限制:相關操作系統的數據模型(32-bt還是64-bit)限制;系統的可用虛擬內存限制;系統的可用物理內存限制。32位系統下,一般限制在1.5G~2G;64為操作系統對內存無限制
JVM初始分配的堆內存由-Xms指定,默認是物理內存的1/64;JVM最大分配的堆內存由-Xmx指定,默認是物理內存的1/4。默認空余堆內存小於40%時,JVM就會增大堆直到-Xmx的最大限制;
舉例說明:
-Xms128m JVM初始分配的堆內存
-Xmx512m JVM最大允許分配的堆內存,按需分配
在設置內存的時候,通常設置-xms -xmx 的值 大小 一致,以避免每次垃圾回收完成后JVM重新分配內存
說明:如果-Xmx不指定或者指定偏小,應用可能會導致java.lang.OutOfMemory錯誤,此錯誤來自JVM不是Throwable的,無法用try...catch捕捉
PermSize和MaxPermSize指明虛擬機為java永久生成對象(Permanate generation)如,class對象、方法對象這些可反射(reflective)對象分配內存限制,這些內存不包括在Heap(堆內存)區之中。
-XX:PermSize=64MB 最小尺寸,初始分配
-XX:MaxPermSize=256MB 最大允許分配尺寸,按需分配
通常設置的時候 只設置最大內存:-XX:MaxPermSize=256MB
過小會導致:java.lang.OutOfMemoryError: PermGen space
一般內存設置建議不更改weblogic環境變量,自己寫啟動腳本,方便按需分配每個server內存。