首页 > 代码库 > 第二节 JVM优化应用以及知识总结

第二节 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优化应用以及知识总结