-verbose:gc //表示输出虚拟机中GC的情况 通常配合PrintGCDetails 使用
-XX:+PrintGCDetails //打印虚拟机中GC的详细情况.
-Xloggc:../logs/gc.log //打印GC日志到文件
-XX:+UseSerialGC //设置使用 Serial 收集器 ,一般jvm默认在client模式下回自动使用Serial收集器(内存小于2G)
-Xms20M //最小堆内存
-Xmx20M //最大堆内存
-Xmn10M //新生代内存
-XX:SurvivorRatio=8 // egdn/survivir = 8 , 8x+2x = 10m , x=1m , survivir=1m , egdn=8m
-XX:PretenureSizeThreshold=2m //大对象直接即进入老年代,这里是2m (Paralle Scavenge收集器不认识PretenureSizeThreshold参数)
-XX:MaxTenuringThreshold=6 // 设置垃圾最大年龄。如果设置为0的话,则年轻代对象不经过Survivor区,直接进入年老代 。对于年老代比较多的应用,可以提高效率。如果将此值设置为一个较大值,则年轻代对象会在Survivor区进行多次复制,这样可以增加对象再年轻代的存活时间 ,增加在年轻代即被回收的概论。
-XX:+HandlePromotionFailure //是否允许担保分配内存失败,即整个年老代空间不足,而整个新生代中Eden和Survivor对象都存活的极端情况。
-XX:NewSize=n //设置年轻代大小
-XX:PermSize=64M //JVM初始分配的非堆内存
-XX:MaxPermSize=128M //JVM最大允许分配的非堆内存,按需分配
ParallelGCThreads //设置 Parallel 收集器 并行GC时进行内存回收的线程数。
收集器设置
-XX:+UseSerialGC //设置串行收集器
-XX:+UseParallelGC //设置并行收集器
-XX:+UseParalledlOldGC //设置并行年老代收集器
-XX:+UseConcMarkSweepGC //使用CMS内存收集
并行收集器设置
-XX:ParallelGCThreads=n //设置并行收集器收集时使用的CPU数。并行收集线程数。
-XX:MaxGCPauseMillis=n //设置并行收集最大暂停时间
-XX:GCTimeRatio=n //设置垃圾回收时间占程序运行时间的百分比。公式为1/(1+n)
并发收集器设置
-XX:+CMSIncrementalMode //设置为增量模式。适用于单CPU情况。
-XX:ParallelGCThreads=n //设置并发收集器年轻代收集方式为并行收集时,使用的CPU数。并行收集线程数。
-XX:+DisableExplicitGC //关闭显示调用GC
-server //设置服务端模式
-Xss256k //一个线程的堆栈大小 ,JDK5.0以后每个线程堆栈大小为1M,以前每个线程堆栈大小为256K。更具应用的线程所需内存大小进行调整。在相同物理内 存下,减小这个值能生成更多的线程。但是操作系统对一个进程内的线程数还是有限制的,不能无限生成,经验值在3000~5000左右。
-XX:+UseAdaptiveSizePolicy // 自动选择年轻代区大小和相应的Survivor区比例,设置此选项后,并行收集器会自动选择年轻代区大小和相应的Survivor区比例,以达到目标系统规定的最低相应时间或者收集频率等,此值建议使用并行收集器时,一直打开.
XX:+CMSParallelRemarkEnabled //为了减少第二次暂停的时间,开启并行remark: -XX:+CMSParallelRemarkEnabled。如果remark还是过长的话,可以开启-XX:+CMSScavengeBeforeRemark选项,强制remark之前开始一次minor gc,减少remark的暂停时间,但是在remark之后也将立即开始又一次minor gc。
-XX:+UseCMSCompactAtFullCollection //在FULL GC的时候, 对年老代的压缩 , CMS是不会移动内存的, 因此, 这个非常容易产生碎片, 导致内存不够用, 因此, 内存的压缩这个时候就会被启用。 增加这个参数是个好习惯。可能会影响性能,但是可以消除碎片
XX+UseCMSInitiatingOccupancyOnly //我们用-XX+UseCMSInitiatingOccupancyOnly标志来命令JVM不基于运行时收集的数据来启动CMS垃圾收集周期。而是,当该标志被开启时,JVM通过CMSInitiatingOccupancyFraction的值进行每一次CMS收集,而不仅仅是第一次。然而,请记住大多数情况下,JVM比我们自己能作出更好的垃圾收集决策。因此,只有当我们充足的理由(比如测试)并且对应用程序产生的对象的生命周期有深刻的认知时,才应该使用该标志。
-XX:+HeapDumpOnOutOfMemoryError // OutOfMemoryError dump 内存
-XX:+UseFastAccessorMethods //原始类型的快速优化
-XX:+UseCMSInitiatingOccupancyOnly //使用手动定义初始化定义开始CMS收集 禁止hostspot自行触发CMS GC
在使用G1垃圾回收器的时候,通过 JVM参数 -XX:+UseStringDeduplication 。 我们可以通过删除重复的字符串,只保留一个char[]来优化堆内存。这个选择在Java 8 u 20被引入。
参考 : https://www.cnblogs.com/redcreen/archive/2011/05/04/2037057.html
http://blog.csdn.net/gmemai/article/details/48786763
http://www.blogjava.net/killme2008/archive/2009/09/22/295931.html
http://www.importnew.com/14086.html
http://blog.csdn.net/gmemai/article/details/48786763
https://www.cnblogs.com/ityouknow/p/5614961.html