java JVM虛擬機選項:Xms Xmx PermSize MaxPermSize 區別
Xms : 是指設定程序啓動時佔用內存大小。一般該值設置大的會使程序啓動快,但是可能會使本機暫時變慢。
Xmx : 是指設定程序運行期間最大可佔用的內存大小,如果程序運行需要佔用更多的內存,超出這個 設置值,就會拋出OutOfMemory異常。
Xss : 是指設定每個線程的堆棧大小。這個就要依據你的程序,看一個線程大約需要佔用多少內存,可能會有多個線程同時運行等。
以上三個參數的設置都是默認以Byte爲單位的,也可以在數字後面添加【k/m】代表kb或mb。不過設定的值不能超過機器本身內存大小,否則整臺機會變慢。對於一般程序來講,我們只要把前面兩個參數設置合適基本就可以了。
各應用程序的設置
-Xmx1600m -XX:PermSize=64m -XX:MaxPermSize=256m
-Xms40m -Xmx512m
java JVM捏造及選項:Xms Xmx PermSize MaxPermSize 差別
java固然是主動採用內存,但是利用步伐,尤其辦事器步伐最好根據業務環境指明內存分派限定。不然大概導致利用步伐宕失。
例如:
-Xms128m
表示JVM Heap(堆內存)最小尺寸128MB,初始化分派
-Xmx512m
表示JVM Heap(堆內存)最大容許的尺寸256MB,按需分派
闡明:倘若-Xmx不指定大概指定偏小,利用大概會導致java.lang.OutOfMemory毛病,此毛病來自JVM,不是Throwable的,無法用try...catch捕獲。
PermSize和MaxPermSize指明捏造機爲java永世天生東西(Permanate generation)如,class東西,可反射(reflective)東西分派內存限定,這些內存不包含在Heap(堆內存)區之中。
-XX:PermSize=64MB最小尺寸,初始分派
-XX:MaxPermSize=256MB最大容許分派尺寸,按需分派
過小會導致:java.lang.OutOfMemoryError:PermGen space
MaxPermSize缺省值和-server -client選項相干
-server 選項下默認MaxPermSize爲64m
-client選項下默認MaxPermSize爲32m
java.lang.OutOfMemoryError 涌現時,有多種環境,比如:PermGen space ,Java heap space 。
遇到的是java.lang.OutOfMemoryError: PermGen space ,是內存的永世保 存地區溢出了,永世生存地區是存放class信息和meta信息的,分派了後,jvm是不會往採用的。必須讓jvm分派更多的permsize.