源于蚂蚁课堂的学习,点击这里查看(老余很给力)
通用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