第二節 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個救助域構成;永久域保存在虛擬機的整個生存週期都存在的對象,永久域不會被垃圾收集器清空。

              

發佈了32 篇原創文章 · 獲贊 8 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章