JVM启动参数以及具体的解释:
-Xmx1024M 最大堆内存 -Xms1024M 初始化堆内存,正常和最大堆内存相同,减少动态改变的内存损耗 -Xmn384M 年轻代内存 -XX:PermSize=128M 初始化持久代内存 -XX:MaxPermSize=256M 最大持久代内存 -XX:SurvivorRatio=8 年轻代比例 8:1:1 -XX:+PrintGCDetails 打印gc信息,可参考gc的比例进行调优 -XX:MaxDirectMemorySize=128M 比如netty的零copy会使用到直接内存,一般System.gc()会回收,但是如果DisableExplicitGC开启,会将System.gc()转为空,不会回收这部分内存,如果启用了cms,会对直接堆外内存回收 -XX:+DisableExplicitGC System.gc()不可用 -XX:+UseConcMarkSweepGC 老年代使用cms,标记-清除算法会产生碎片 -XX:+UseParNewGC 年轻代使用并行收集器 -XX:+UseCMSCompactAtFullCollection 和下面的配合使用,开启碎片整理 -XX:CMSFullGCsBeforeCompaction=10 10次fullgc后开始内存空间压缩 -XX:+CMSParallelRemarkEnabled cms收集过程初始标记、并发标记、预清理、可中断预清理、最终标记、并发清除、并发重置,在最终标记中遍历区域较多,开启并行收集。 -XX:+UseCMSInitiatingOccupancyOnly 开启,使用下面的值 -XX:CMSInitiatingOccupancyFraction=70 对内存占用70%执行cms -XX:+CMSClassUnloadingEnabled 清理持久代 -XX:+HeapDumpOnOutOfMemoryError oom会将堆信息dump -XX:HeapDumpPath=/opt/log/tomcat/10-sdk/dump/heap.hprof dump文件地址 -XX:+PrintGCDateStamps 打印gc时间 -XX:TargetSurvivorRatio=90 s区达到90%自动计算转到老年代的age -XX:MaxTenuringThreshold=15 年轻代到老年代的最大age -XX:-ReduceInitialCardMarks 解决gc bug -Dcom.sun.management.jmxremote.authenticate=true 开启用户认证 -Dcom.sun.management.jmxremote.ssl=false 禁止ssl连接 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.access.file=../shared/conf/jmxremote.access 用户名 -Dcom.sun.management.jmxremote.password.file=../shared/conf/jmxremote.password 密码 -Djava.rmi.server.hostname=xxx -Dcatalina.base=/opt/oracle/tomcat/t-10 设置tomcat目录 -Xdebug 支持debug -Xrunjdwp:transport=dt_socket,address=9910,server=y,suspend=n 设置debug参数 -Djava.util.logging.config.file=/opt/oracle/tomcat/t-10/conf/logging.properties 日志配置文件 -Dfile.encoding=UTF8 设置文件编码 -Djava.io.tmpdir=/opt/oracle/tomcat/t-10/temp 临时文件目录,java代码中可以使用System.getProperties("java.io.tmpdir")来获取