美文网首页JDK
JVM调优常用参数

JVM调优常用参数

作者: 雪飘千里 | 来源:发表于2020-03-17 02:34 被阅读0次

1、调优的目的

  • 1.控制GC的行为
    GC是一个后台处理,但是它也是会消耗系统性能的,因此经常会根据系统运行的程序的特性来更改GC行为。

  • 2.控制JVM堆栈大小
    一般来说,JVM在内存分配上不需要你修改,但是当你的程序新生代对象在某个时间段产生的比较多的时候,就需要控制新生代的堆大小,同时,还要需要控制总的JVM大小避免内存溢出。

  • 3.控制JVM线程的内存分配
    如果是多线程程序,产生线程和线程运行所消耗的内存也是可以控制的,需要通过一定时间的观测后,配置最优结果。

2、GC 事件分类

根据垃圾收集回收的区域不同,垃圾收集主要分为:

  • 2.1 Young GC(又称Minor GC、YGC)
    新生代内存的垃圾收集事件称为 Young GC(又称 Minor GC),当 JVM 无法为新对象分配在新生代内存空间时总会触发 Young GC。

    比如 Eden 区占满时,新对象分配频率越高,Young GC 的频率就越高。

    Young GC 每次都会引起全线停顿(Stop-The-World),暂停所有的应用线程,停顿时间相对老年代 GC 造成的停顿,几乎可以忽略不计。

  • 2.2 Old GC(又称Major GC)
    只清理老年代空间的 GC 事件,只有 CMS 的并发收集是这个模式。

  • 2.3 Full GC
    清理整个堆的 GC 事件,包括新生代、老年代、元空间等 。

  • 2.4 Mixed GC
    清理整个新生代以及部分老年代的 GC,只有 G1 有这个模式。

3、常用参数总结

3.1 堆设置

-Xms:初始堆大小

-Xmx:最大堆大小

-Xmn:新生代大小
-Xss:线程堆栈大小,默认为1M

-XX:NewRatio=n:设置新生代和年老代的比值,默认为1:2。如为3,表示新生代与年老代比值为1:3,年轻代占整个年轻代年老代和的1/4

-XX:SurvivorRatio=n:年轻代中Eden区与两个Survivor区的比值。注意Survivor区有两个。默认为8:2
如:6,表示Eden:Survivor=6:4,一个Survivor区占整个年轻代的2/10

-XX:MaxPermSize=n:设置持久代大小

3.2 收集器设置

-XX:+UseParallelGC:设置并行收集器
-XX:+UseParalledlOldGC:设置并行年老代收集器

-XX:+UseG1GC:使用G1做为GC收集器
-XX:+UseConcMarkSweepGC:设置并发收集器CMS

3.3 垃圾回收统计信息

-XX:+PrintGC:输出形式:
[GC 118250K->113543K(130112K), 0.0094143 secs]
[Full GC 121376K->10414K(130112K), 0.0650971 secs]
-XX:+PrintGCDetails:输出形式:
[GC [DefNew: 8614K->781K(9088K), 0.0123035 secs] 118250K->113543K(130112K), 0.0124633 secs]
[GC [DefNew: 8614K->8614K(9088K), 0.0000665 secs][Tenured: 112761K->10414K(121024K), 0.0433488 secs] 121376K->10414K(130112K), 0.0436268 secs]

-XX:+PrintGCTimeStamps:打印GC停顿耗时
-XX:+PrintGCApplicationStoppedTime:打印垃圾回收期间程序暂停的时间.
-XX:+PrintHeapAtGC:打印GC前后的详细堆栈信息
-Xloggc:filename:把相关日志信息记录到文件以便分析.

3.4 并行收集器参数设置

-XX:ParallelGCThreads=n:设置并行收集器收集时使用的CPU数。并行收集线程数。STW期间,并行GC线程数

-XX:MaxGCPauseMillis=n:设置并行收集最大暂停时间

-XX:GCTimeRatio=n:设置垃圾回收时间占程序运行时间的百分比。公式为1/(1+n)

3.5 并发收集器设置

-XX:+CMSIncrementalMode:设置为增量模式。适用于单CPU情况。

-XX:ParallelGCThreads=n:设置并发收集器年轻代收集方式为并行收集时,使用的CPU数。并行收集线程数

4、实例

A/B-Test jvm调试,默认情况下,系统压测800qps,优化后能达到1000

优化参数:
-XX:NewRatio=1:设置新生代和年老代的比值为2:1
-Xss:线程堆栈大小,默认为1M,调整为512K
-XX:+UseG1GC:使用G1做为GC收集器
-XX:MaxGCPauseMillis=n:设置并行收集最大暂停时间为20ms

相关文章

  • Java 应用如何调优?

    一、节点配额和内核参数调整 JVM 配置常用参数 堆参数 回收器参数 项目中常用配置 常用组合 常用 GC 调优策...

  • JVM GC调优入门

    JVM GC调优入门 这篇文章会介绍几个常用的调优参数,再通过两个案例介绍如何进行JVM GC调优。阅读这篇文章的...

  • JVM 高频面试题

    本章面试题如下:JVM三大性能调优参数,JVM 几个重要的参数JVM调优JVM内存管理,JVM的常见的垃圾收集器,...

  • JVM调优常用参数

    1、调优的目的 1.控制GC的行为GC是一个后台处理,但是它也是会消耗系统性能的,因此经常会根据系统运行的程序的特...

  • JVM调优常用参数

    JVM调优常用参数 内存调优 **设置heap大小这个非常重要,通常只要这里设置够了,就不会出现溢出。''-Xms...

  • JVM常用调优参数

    -Xms: 初始大小内存 ,默认为物理内存1/64 等价于 -XX:InitialHeapSize -Xmx:最大...

  • jvm监控与调优之jdk命令行工具

    jvm监控与调优之jdk命令行工具 目录 jvm监控与调优之jdk命令行工具jvm的参数类型标准参数X参数XX参数...

  • 02. 基于JDK命令行工具的监控

    JVM与调优 imooc JVM Markdown JVM参数类型 标准参数 -help-server -cli...

  • JVM调优补充

    本文将不具体讲述JVM的机制,重点关注JVM有哪些可以调优的参数,这些参数对JVM又有哪些影响 一、调优方向参考表...

  • Spark(十八)JVM调优之原理概述以及降低cache操作的内

    一、调优背景 1、常规性能调优:分配资源、并行度。。。等 2、JVM调优(Java虚拟机):JVM相关的参数,通常...

网友评论

    本文标题:JVM调优常用参数

    本文链接:https://www.haomeiwen.com/subject/dotltqtx.html