博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JVM参数使用笔记
阅读量:4212 次
发布时间:2019-05-26

本文共 4654 字,大约阅读时间需要 15 分钟。

JVM提供了大量的可配置参数,这些参数根据功能可以划分为几个大类:

普通分类

server

含义:服务端模式
使用方法:-server
解释:指定java进程以服务端模式运行,默认-Xms128m,-Xmx1024m;如果不指定该参数,那么java虚拟机自动根据当前所在机器cpu和内存是否大于等于2个/2g以上来自动设置为服务端模式。
如果是客户端模式,默认jvm参数:-Xms1m,-Xmx64M(一般为前段程序比如GUI),该模式启动较慢,但运行性能较快

client

含义:客户端模式
使用方式:-client
解释:该运行模式启动较快,但是性能低

Dkey=value

含义:指定系统级入参
使用方式:-Dname=张三,那么在程序中可以通过System.getProperty(“name”);来获取对应的值

内存相关参数

NewRatio

含义:新生代和老年代的比例,一般默认为1:2,即新生代占堆空间的1/3,老年代占2/3
使用方式:-XX:NewRatio=2
解释:代表:新生代:老年代 = 1:2

Xms

含义:堆内存最小值
使用方式:-xms2g 或者 -XX:InitialHeadSize=2048m

Xmx

含义:堆内存最大值
使用方式:-xmx2g 或者 -XX:MaxHeapSize=2048m

NewSize

含义:新生代对象生成时占用内存的默认值
使用方式:-XX:NewSize=10m

Xmn

含义:新生代最大值
使用方式:-Xmn1024m 或者 -XX:MaxNewSize=1024m

PermSize

含义:永久代最小值(1.7)
使用方式:-XX:PermSize=2g

MaxPermSize

含义:永久代最大值(1.7)
使用方式:-XX:MaxPermSize=2048m

MetaspaceSize

含义:元空间最小值(1.8)
使用方式:-XX:MetaspaceSize=2048m

MaxMetaspaceSize

含义:元空间最大值(1.8)
使用方式:-XX:MaxMetaspaceSize=2048m

Xss

含义:线程栈内存最大值
使用方式:-Xss128k 或者 -XX:ThreadStackSize=128k

MaxDirectMemorySize

含义:最大直接内存(该内存不属于堆内存,属于堆外,元空间也是直接内存)
使用方式:-XX:MaxDirectMemorySize=2048m

GC相关参数

SurvivorRatio

含义:eden区和survivor的比例值
使用方式:-XX:SurvivorRatio=8
解释:这个8代表了eden:survivor=8:1,什么意思呢?比如年轻代一共100M,那么eden区占1008/(8+1+1)(survivor区默认有s0和s1)=80M,s0和s1分别占1001/(8+1+1)=10M。

MaxTenuringThreshold

含义:年轻代最大GC年龄
使用方式:-XX:MaxTenuringThreshold=15(默认15)
解释:每当对象经过一次minor gc,对象GC分代年龄就会+1,当GC分代年龄超过设定数值,默认15,那么该对象会进入老年代。

PretenureSizeThreshold

含义:允许进入新生代对象的最大值,如果为0,表示无限制
使用方式:-XX:PretenureSizeThreshold=1024
解释:如果新对象进入eden区,发现对象大小大于1024,那么该对象直接进入老年代,为了避免该对象反复多次在from和to区来回复制,该参数只在Serial和ParNew收集器有效,Parallel Scavenge不识别

UseParallelGC

含义:年轻代使用Parallel Scavenge收集器
使用方式:开启:-XX:+UseParallelGC,关闭:-XX:-UseParallelGC
解释:1.7,1.8的年轻代的默认收集器,同时默认老年代收集器为:Serial Old垃圾收集器

UseSerialGC

含义:年轻代使用Serial垃圾收集器,单线程收集
使用方式:开启:-XX:+UseSerialGC,关闭:-XX:-UseSerialGC
解释:选择或关闭SerialGC垃圾收集器,性能较差,一般不用

UseParNewGC

含义:年轻代使用ParNew收集器,并行收集
使用方式:开启:-XX:+ParNewGC,关闭:-XX:-ParnewGC

UseParallelOldGC

含义:老年代使用Parallel Scavenge收集器,并行收集
使用方式:开启:-XX:+UseParallelOldGC,关闭:-XX:UseParallelGC

UseG1GC

含义:使用G1垃圾收集齐
使用方式:开启:-XX:UseG1GC,关闭:-XX:-UseG1GC

ParallelGCThreads

含义:并行执行GC操作的线程数量
使用方式:-XX:ParallelGCThreads=8

UseConcMarkSweepGC

含义:老年代使用CMS垃圾收集器,并行收集
使用方式:开启:-XX:+UseConcMarkSweepGC,关闭:-XX:-UseConcMarkSweepGC
解释:如果使用该模式,年轻代默认使用:ParNew收集器;老年代开启该模式如果失败,那么会自动启用Serial Old收集器。

CMSInitiatingOccupancyFraction

含义:触发执行CMS回收当前年代区内存占用的百分比,负数表示使用CMSTriggerRatio设置的值
使用方式:-XX:+CMSInitiatingOccupancyFraction=60(代表百分之六十)

UseCMSInitiatingOccupancyOnly

含义:只根据占用情况来执行CMS收集
使用方式:开启:-XX:+UseCMSInitiatingOccupancyOnly,关闭:-XX:-UseCMSInitiatingOccypancyOnly

UseCMSCompactAtFullCollection

含义:使用CMS执行full gc时对内存进行压缩处理
使用方式:开启:-XX:+UseCMSCompactAtFullCollection,关闭:-XX:-UseCMSCompactAtFullCollection

CMSFullGCsBeforeCompaction

含义:多少次full gc之后进行内存压缩
使用方式:-XX:CMSFullGCsBeforeCompaction=10

CMSClassUnloadingEnabled

含义:当发生CMS GC时,是否启用类卸载功能
使用方式:开启:-XX:CMSClassUnloadingEnabled,关闭:-XX:-CMSClassUnloadingEnabled

CMSParallelRemarkEnabled

含义:垃圾收集时,是否使用并且标记清理对象
使用方式:开启:-XX:CMSParallelRemarkEnabled,关闭:-XX:-CMSParallelRemarkEnabled
解释:在使用UseParNewGC收集器的时候,减少标记时间

MaxGCPauseMillils

含义:自适应大小策略的最大GC暂停时间,单位为毫秒
使用方式:-XX:MaxGCPauseMillils=100

DisableExplicitGC

含义:禁用System.gc()触发full gc
使用方式:开启:-XX:DisableExplicitGC,关闭:-XX:-DisableExplicitGC

Xloggc

含义:输出GC日志文件指定路径
使用方式:-Xloggc:/use/local/gc.log

UseGCLogFileRotation

含义:滚动GC日志文件,前提是配置了-Xloggc
使用方式:开启:-XX:+UseGCLogFileRotation,关闭:-XX:-UseGCLogFileRotation

NumberOfGCLogFiles

含义:滚动GC日志文件数量,默认为0,不滚动
使用方式:-XX:NumberOfGCLogFiles=10

GCLogFileSize

含义:GC文件滚动大小,前期是配置了UseGCLogFileRotation,设置为0表示仅通过jmd命令触发
使用方式:-XX:GCLogFileSize=10m

PrintGCDetails

含义:GC时打印更多详情日志
使用方式:开启:-XX:PrintGCDetail,关闭:-XX:PrintGCDetail
解释:可以通过jinfo -flag [+|-]PrintGCDetail 来动态设置开启和关闭

PrintGCDateStamps

含义:GC时打印时间戳信息
使用方式:开启:-XX:PrintGCDateStamps,关闭:-XX:-PrintGCDateStamps
解释:可以通过jinfo -flag [+|-]PrintGCDateStamps 来动态设置开启和关闭

PrintTenuringDistribution

含义:打印堆中存活对象实例的GC年龄信息
使用方式:开启:-XX:PrintTenuringDistribution,关闭:-XX:-PrintTenuringDistribution

PrintGCApplicationStoppedTime

含义:打印应用暂停时间
使用方式:开启:-XX:PrintGCApplicationStoppedTime,关闭:-XX:-PrintGCApplicationStoppedTime

PrintHeapAtGC

含义:GC前后打印堆区使用信息
使用方式:开启:-XX:PrintHeapAtGC,关闭:-XX:-PrintHeapAtGC

异常跟踪相关参数

HeapDumpOnOutOfMemoryError

含义:抛出堆溢出错误时导出堆信息到指定文件
使用方式:开启:-XX:HeapDumpOnOutOfMemoryError,关闭:-XX:-HeapDumpOnOutOfMemoryError
解释:可以通过jinfo -flag [+|-]HeapDumpOnOutOfMemoryError 来动态设置开启和关闭

HeapDumpPath

含义:当HeapDumpOnOutOfMemoryError开启的时候,dump文件的保存路径,默认为工作目录下的java_pid.hprof文件
使用方式:-XX:HeapDumpPath=/data/log/jvm.dump

ErroFile

含义:保存错误日志到文件中
使用方式:-XX:ErrorFile=./error.log

GCHeapFreeLimit

含义:堆空间允许空闲的临界值(这里常用于抛出JVM内存骗局,无限full gc,但是不抛出OOM的情况
使用方式:-XX:GCHeapFreeLimit=25
解释:代表如果当前堆空闲空间小于25,那么就会抛出一个OOM错误

仅供我个人做平常开发笔记记忆使用

转载地址:http://bikmi.baihongyu.com/

你可能感兴趣的文章
欢迎加入【亿能测试快讯】邮件列表!
查看>>
为什么我们的自动化测试“要”这么难
查看>>
LoadRunner性能脚本开发实战训练
查看>>
测试之途,前途?钱途?图何?
查看>>
adb常用命令
查看>>
通过LR监控Linux服务器性能
查看>>
通过FTP服务的winsockes录制脚本
查看>>
LRwinsocket协议测试AAA服务器
查看>>
Net远程管理实验
查看>>
反病毒专家谈虚拟机技术 面临两大技术难题
查看>>
几种典型的反病毒技术:特征码技术、覆盖法技术等
查看>>
Software Security Testing软件安全测试
查看>>
SQL注入漏洞全接触--进阶篇
查看>>
SQL注入漏洞全接触--高级篇
查看>>
SQL注入法攻击一日通
查看>>
论文浅尝 | 通过共享表示和结构化预测进行事件和事件时序关系的联合抽取
查看>>
论文浅尝 | 融合多粒度信息和外部语言知识的中文关系抽取
查看>>
论文浅尝 | GMNN: Graph Markov Neural Networks
查看>>
廖雪峰Python教程 学习笔记3 hello.py
查看>>
从内核看epoll的实现(基于5.9.9)
查看>>