JVM常用启动参数
通用配置
-Xms4096m //最小堆内存
-Xmx4096m //最大堆内存
-Xmn2048m //年轻代大小
-XX:SurvivorRatio=8 //设置eden区和survivor区的内存大小比例,例如8就代表eden和两个survivor区的比例是8:1:1
-XX:MaxTenuringThreshold=15(5~15) //在新生代对象存活次数(经过Minor GC的次数)超过n后,就会晋升到老年代
-XX:TargetSurvivorRatio=90 //在新生代的对象不一定要满足存活年龄达到MaxTenuringThreshold才能去老年代,当Survivor空间中相同年龄所有对象大小总和大于[Desired survivor size]时,年龄大于或等于该年龄的对象直接进入老年代。[Desired survivor size]=单个survivor大小*TargetSurvivorRatio百分比
-XX:PermSize=512M //永久代初始值
-XX:MaxPermSize=512m //永久代最大值
-Xss256k //每个线程的堆栈大小
-XX:+DisableExplicitGC //禁止显式调用System.gc()
CMS+ParNew收集器配置
-XX:+UseConcMarkSweepGC //使用CMS收集器
-XX:+UseParNewGC //使用ParNew收集器
-XX:ParallelGCThreads=20 //设置ParNew收集器的垃圾回收并行线程数
-XX:CMSInitiatingOccupancyFraction=85 //在老年代内存到达n%的时候开始CMS回收(因为CMS回收时用户线程并发,因此要提前开始回收)
日志配置
-verbose:gc //输出gc详情
-XX:+PrintGCDateStamps //GC发生的时间信息
-XX:+PrintGCDetails //显示GC详细信息
-Xloggc:logs/gc_`date '+%Y-%m-%d_%H:%M:%S'`.log //gc日志产生的路径
调试配置
-XX:+PrintTenuringDistribution //输出在survivor空间里面有效的对象的岁数情况
-XX:+TraceClassLoading //输出类加载信息
快速可用的组合配置(用于BS场景)
-Xms2048m -Xmx2048m -Xmn1024m -XX:PermSize=128m -XX:MaxPermSize=128m -Xss512k -XX:ParallelGCThreads=20 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:SurvivorRatio=8 -XX:TargetSurvivorRatio=50
附
官方的vm参数页面,可以在里面直接查命令的解释:
http://www.oracle.com/technetwork/java/vmoptions-jsp-140102.html