JVM常用的调优参数

源于蚂蚁课堂的学习,点击这里查看(老余很给力)    

通用JVM参数

-server 
    如果不配置该参数,JVM会根据应用服务器硬件配置自动选择不同模式,server模式启动比较慢,但是运行期速度得到了优化,
适合于服务器端运行的JVM

-client
    启动比较快,但是运行期响应没有server模式的优化,适合于个人PC的服务开发和测试

-Xmx
    堆内存最大值,默认是机器物理内存的1/4

-Xms
    堆内存最小值,默认情况是机器物理内存的1/64,(最大和最小最好相同)

-XX:PermSize
    初始化永久内存区域大小(元空间)

-XX:MaxPermSize
    设置元空间上限

-Xmn
    新生代大小 默认是堆内存的1/3

-XX:SurvivorRatio
    设置年轻代中Eden区与Survivor区的大小比值

-XX:MaxTenuringThreshold
    设置垃圾的最大年龄,即经历多少次新生代垃圾回收后依旧存活,进入老年代

-XX:GCTimeRatio
    设置垃圾回收时间占程序运行时间的百分比
    该参数设置为n的话,则垃圾回收时间占程序运行时间百分比的公式为1/(1+n)

-XX:TargetsurvivorRatio
    控制允许使用的救助空间的比例,默认值是50

-Xss
    设置每个线程的堆栈大小

-Xnoclassgc 
    取消系统对特定类的垃圾回收

 串行收集器参数

-XX:+UseSerialGC
    设置串行收集器

并行收集器参数 

-XX:+UseParallelGC
    选择垃圾收集器为并行收集器,此配置仅对年轻代有效

-XX:ParallelGCThreads
    配置并行收集器的线程数

-XX:+UseParallelOldGC
    采用对于老年代并发收集的策略

-XX:MaxGCPauseMillis
    设置每次年轻代并行收集最大暂停时间,如果无法满足此时间,JVM会自动调整年轻代大小以满足此值

-XX:+UseAdaptiveSizePolicy
    并行收集器会自动选择年轻代区大小和相应的Survivor区比例,以达到目标系统规定的最低响应时间或者收集频率

 并发收集器参数

-XX:+UseConcMarkSweepGC
    指定在老年代使用 concurrent cmark sweep gc

-XX:+UseParNewGC
    指定在New Generation使用 parallel collector

-XX:+UseCMSCompactAtFullCollection
    打开对老年代的压缩

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

-XX:CMSFullGCsBeforeCompaction
    由于并发收集器不对内存空间进行压缩、整理,所以运行一段时间以后会产生“碎片”,使得运行效率降低

-XX:+CMSClassUnloadingEnabled 
    使CMS收集持久代的类,而不是full gc

​​​​​​​监控结果

jmap命令查看堆内存分配和使用情况

top命令监控结果

jstat -gcutil 进程号 命令监控结果

jstack 进程号 输出日志

 系统的JVM设置

<jvm-options>-XX:+PrintGCApplicationConcurrentTime</jvm-options> 
<jvm-options>-XX:+PrintGCApplicationStoppedTime</jvm-options>
<jvm-options>-XX:+PrintGCTimeStamps</jvm-options>
<jvm-options>-XX:+PrintGCDetails</jvm-options>
<jvm-options>-Xms2048m</jvm-options>
<jvm-options>-Xmx2048m</jvm-options>
<jvm-options>-server</jvm-options>
<jvm-options>-Djava.awt.headless=true</jvm-options>
<jvm-options>-XX:PermSize=256m</jvm-options>
<jvm-options>-XX:MaxPermSize=256m</jvm-options>
<jvm-options>-XX:+DisableExplicitGC</jvm-options>
<jvm-options>-Xmn768M</jvm-options>
<jvm-options>-XX:SurvivorRatio=3</jvm-options>
<jvm-options>-Xss128K</jvm-options>
<jvm-options>-XX:TargetSurvivorRatio=80</jvm-options>
<jvm-options>-XX:MaxTenuringThreshold=5</jvm-options>
<jvm-options>-XX:+UseConcMarkSweepGC</jvm-options>
<jvm-options>-XX:+CMSClassUnloadingEnabled</jvm-options>
<jvm-options>-XX:+UseCMSCompactAtFullCollection</jvm-options>
<jvm-options>-XX:-CMSParallelRemarkEnabled</jvm-options>

 Gc相关参数

控制台打印gc日志 

-verbose:gc
-XX:+PrintGCDetails
-XX:+PrintHeapAtGC(详细的gc信息)

输出gc日志到指定文件

 -Xloggc:
(例如:  -Xloggc:D:\logs\gc.log)

Gc日志分块

-XX:-UseGCLogFileRotation
-XX:GCLogFileSize = 8M

猜你喜欢

转载自blog.csdn.net/yxh13521338301/article/details/106546592