java虚拟机常见的参数笔记

 -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

你可能感兴趣的:(java虚拟机常见的参数笔记)