jvm Xms Xmx PermSize MaxPermSize

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.


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章