第二節 JVM優化應用以及知識總結
在JVM中。假設98%的時間是用於GC且可用的HeapSize不足2%時將會拋出OOM異常;HeapSize最大不要超過可用物理內存的80%,一般-Xms –Xmx設置為同樣,-Xmn設置為1/4的-Xmx。
若-Xms、-Xmx設置的大小超過物理內存,則會出現:
”Error occurred during initialization if VM could not reserve enoughspace fro object heap”
對於Web類型的應用(要求大吞吐量)堆大一些好。而對於GUI應用(要求實時響應)堆太大會占用太多時間進行垃圾收集,這樣就不能實現較好的實時性,交互性會較差。
通常出現的錯誤:
“java.lang.OutOfMemeoryError:Java Heap space”是由於JVM的默認堆大小是64MB,能夠通過設置最大值和最小值實現。通常設置為內存大小的80%,以下以1G內存為例。
解決方式:
1)在Windows中加入環境變量
JAVA_OPTS=-Xm800m–Xmx800m
2)若用的是Tomcat,則在Tomcat的主文件夾的bin/catalina.bat中加上
SetJava_OPTS=-Xm800m –Xmx800m
3)在Linux系統中。則在Tomcat的主文件夾的bin/catalina.bat中加上
Set Java_OPTS=’-Xm800m –Xmx800m’
主要知識點:
JVM內存組成:新域(YoungGeneration)、舊域(Tenured Generation)和永久域(Perm Generation)。新域有Eden和2個救助域構成。永久域保存在虛擬機的整個生存周期都存在的對象,永久域不會被垃圾收集器清空。
第二節 JVM優化應用以及知識總結