JVM常用参数整理

这里不保证完全准确,可以到官方文档上面去验证:

https://docs.oracle.com/javase/8/docs/technotes/tools/unix/java.html

GC常用参数

  • -Xmn:年轻代大小
  • -Xms:初始堆大小
  • -Xmx:最大堆大小
  • -Xss:每个线程的栈大小
  • -XX:+UseTLAB:使用TLAB,默认打开
  • -XX:+PrintTLAB:打印TLAB的使用情况
  • -XX:+TLABSize:设置TLAB大小
  • -XX:+DisableExplictGC:禁用显式的垃圾回收,即System.gc()
  • -XX:+PrintGC:打印GC信息
  • -XX:+PrintGCDetails:GC详细信息
  • -XX:+PrintHeapAtGC:GC打印堆栈情况
  • -XX:+PrintGCTimeStamps:发生GC系统的时间
  • -XX:+PrintGCApplicationConcurrentTime:打印自上次GC暂停以来经过的时间
  • -XX:+PrintGCApplicationStoppedTime:打印GC的暂停时长
  • -XX:+PrintReferenceGC:记录回收了多少种不同引用类型的引用
  • -verbose:class:类加载详细过程
  • -XX:+PrintVMOptions:打印JVM的参数
  • -XX:+PrintFlagsFinal/-XX:+PrintFlagsInitial:打印最终的/初始化默认的参数
  • -Xloggc:opt/log/gc.log
  • -XX:MaxTenuringThreshold:新生代晋升年龄,最大值15
  • 锁自旋次数 -XX:PreBlockSpin 热点代码检测参数 -XX:CompileThreshold 逃逸分析 标量替换…这些不建议设置

Parallel常用参数

  • -XX:SurvivorRatio:新生代Eden:Survivor1:Survivor2的比例,默认8:1:1
  • -XX:PreTenureSizeThreshold:多大对象直接放入老年代
  • -XX:MaxTenuringThreshold:新生代晋升年龄,最大值15
  • -XX:+ParallelGCThreads:并行收集器的线程数,同样适用于CMS,一般设为和CPU核数相同
  • -XX:+UseAdaptiveSizePolicy:自适应Eden:Survivor1:Survivor2大小比例

CMS常用参数

  • -XX:+UseConcMarkSweepGC:启用CMS
  • -XX:ParallelCMSThreads:CMS线程数量
  • -XX:CMSInitiatingOccupancyFraction:使用多少比例的老年代后开始CMS收集,默认是92%
  • -XX:+UseCMSCompactAtFullCollection:在FGC时进行压缩,会导致回收耗时变长
  • -XX:CMSFullGCsBeforeCompaction:多少次FGC之后进行压缩
  • -XX:+CMSClassUnloadingEnabled:永久代相关,1.8之前的
  • -XX:CMSInitiatingPermOccupancyFraction:永久代相关,1.8之前的
  • -XX:GCTimeRatio:建议GC时间占用程序运行时间的百分比
  • -XX:MaxGCPauseMillis:期望的垃圾回收停顿时间

G1常用参数

  • -XX:+UseG1GC:启用G1
  • -XX:MaxGCPauseMillis:建议GC停顿的最大事件,G1会尝试调整Young区的块数来达到这个值
  • -XX:GCPauseIntervalMillis:GC的间隔时间
  • -XX:+G1HeapRegionSize:设置Region分区大小,随着size增加,垃圾的存活时间更长,GC间隔更长,但每次GC的时间也会更长,ZGC做了改进(动态区块大小)
  • -XX:G1NewSizePercent:新生代最小比例,默认为5%
  • -XX:G1MaxNewSizePercent:新生代最大比例,默认为60%
  • -XX:GCTimeRatio:建议GC时间占用程序运行时间的百分比
  • -XX:ConcGCThreads:用于清理的并发线程数量
  • -XX:InitiatingHeapOccupancyPercent:启动G1的堆空间占用比例

原创文章,作者:彭晨涛,如若转载,请注明出处:https://www.codetool.top/article/jvm%e5%b8%b8%e7%94%a8%e5%8f%82%e6%95%b0%e6%95%b4%e7%90%86/

(0)
彭晨涛彭晨涛管理者
上一篇 2020年5月26日
下一篇 2020年5月27日

相关推荐

  • 深入理解java虚拟机第三版读书笔记03

    续深入理解java虚拟机第三版读书笔记02 HotSpot虚拟机对象探秘 对象的创建 当Java虚拟机遇到一条字节码new指令时,首先将去检查这个指令的参数是否能在常量池中定位到一…

    2020年1月6日
    0130
  • 深入理解java虚拟机第三版读书笔记10

    以下是第十章 前端编译与优化的内容 Java中的编译可能是指: 前端编译:把*.java文件转变成*.class文件的过程 即时编译(JIT):运行期把字节码转变成…

    Java 2020年1月25日
    0130
  • 深入理解java虚拟机第三版读书笔记11

    以下是第十一章 后端编译与优化的内容 把Class文件转换成与本地基础设施(硬件指令集、操作系统)相关的二进制机器码可以视为整个编译过程的后端。 最近几年提前编译也开始兴起,我们在…

    2020年1月27日
    0280
  • JDK8u20字符串去重

    优点:节省大量内存 缺点:略微多占用cpu时间,新生代回收时间略微增加 -XX:+UseStringDeduplication String s1 = new String("he…

    Java 2020年1月15日
    0740
  • StringTable性能调优

    StringTable是jvm运行时常量池表中的字符串常量池,深入理解java虚拟机第三版读书笔记02有相关的介绍。 无论是运行时常量表还是StringTable,他们内部都是通过…

    2020年1月10日
    0270
  • 深入理解java虚拟机第三版读书笔记07

    附: Java虚拟机规范-Java虚拟机指令集:JDK8 Java虚拟机规范-Java虚拟机指令集:JDK13 续深入理解java虚拟机第三版读书笔记06 字节码指令简介 Java…

    Java 2020年1月21日
    0230
  • Java字节码实例探究

    深入理解java虚拟机第三版读书笔记06中介绍了class文件结构,这里我们动手实践,编译一个类查看一下它的字节码。 java源码: public class Main { pri…

    2020年1月23日
    0220
  • 深入理解java虚拟机第三版读书笔记12

    以下是第十二章 Java内存模型与线程的内容 硬件的效率与一致性 基于高速缓存的存储交互很好地解决了处理器与内存速度之间的矛盾,但是也为计算机系统带来更高的复杂度,它引入了一个新的…

    2020年1月29日
    01540
  • 深入理解java虚拟机第三版读书笔记13

    以下是第十三章 Java内存模型与线程的内容 线程安全 当多个线程同时访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方进行任…

    2020年1月30日
    0130
  • 深入理解java虚拟机第三版读书笔记01

    做笔记之前的感言 谈到《深入理解java虚拟机》,在业内可太有名了,是国内的一位大神写的一本关于java虚拟机的畅销书,基本上对java稍有深入的程序员都听说过这本书。不过遗憾的是…

    2020年1月4日
    0270

发表回复

登录后才能评论