本文共 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:2Xms
含义:堆内存最小值 使用方式:-xms2g 或者 -XX:InitialHeadSize=2048mXmx
含义:堆内存最大值 使用方式:-xmx2g 或者 -XX:MaxHeapSize=2048mNewSize
含义:新生代对象生成时占用内存的默认值 使用方式:-XX:NewSize=10mXmn
含义:新生代最大值 使用方式:-Xmn1024m 或者 -XX:MaxNewSize=1024mPermSize
含义:永久代最小值(1.7) 使用方式:-XX:PermSize=2gMaxPermSize
含义:永久代最大值(1.7) 使用方式:-XX:MaxPermSize=2048mMetaspaceSize
含义:元空间最小值(1.8) 使用方式:-XX:MetaspaceSize=2048mMaxMetaspaceSize
含义:元空间最大值(1.8) 使用方式:-XX:MaxMetaspaceSize=2048mXss
含义:线程栈内存最大值 使用方式:-Xss128k 或者 -XX:ThreadStackSize=128kMaxDirectMemorySize
含义:最大直接内存(该内存不属于堆内存,属于堆外,元空间也是直接内存) 使用方式:-XX:MaxDirectMemorySize=2048mSurvivorRatio
含义: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:-ParnewGCUseParallelOldGC
含义:老年代使用Parallel Scavenge收集器,并行收集 使用方式:开启:-XX:+UseParallelOldGC,关闭:-XX:UseParallelGCUseG1GC
含义:使用G1垃圾收集齐 使用方式:开启:-XX:UseG1GC,关闭:-XX:-UseG1GCParallelGCThreads
含义:并行执行GC操作的线程数量 使用方式:-XX:ParallelGCThreads=8UseConcMarkSweepGC
含义:老年代使用CMS垃圾收集器,并行收集 使用方式:开启:-XX:+UseConcMarkSweepGC,关闭:-XX:-UseConcMarkSweepGC 解释:如果使用该模式,年轻代默认使用:ParNew收集器;老年代开启该模式如果失败,那么会自动启用Serial Old收集器。CMSInitiatingOccupancyFraction
含义:触发执行CMS回收当前年代区内存占用的百分比,负数表示使用CMSTriggerRatio设置的值 使用方式:-XX:+CMSInitiatingOccupancyFraction=60(代表百分之六十)UseCMSInitiatingOccupancyOnly
含义:只根据占用情况来执行CMS收集 使用方式:开启:-XX:+UseCMSInitiatingOccupancyOnly,关闭:-XX:-UseCMSInitiatingOccypancyOnlyUseCMSCompactAtFullCollection
含义:使用CMS执行full gc时对内存进行压缩处理 使用方式:开启:-XX:+UseCMSCompactAtFullCollection,关闭:-XX:-UseCMSCompactAtFullCollectionCMSFullGCsBeforeCompaction
含义:多少次full gc之后进行内存压缩 使用方式:-XX:CMSFullGCsBeforeCompaction=10CMSClassUnloadingEnabled
含义:当发生CMS GC时,是否启用类卸载功能 使用方式:开启:-XX:CMSClassUnloadingEnabled,关闭:-XX:-CMSClassUnloadingEnabledCMSParallelRemarkEnabled
含义:垃圾收集时,是否使用并且标记清理对象 使用方式:开启:-XX:CMSParallelRemarkEnabled,关闭:-XX:-CMSParallelRemarkEnabled 解释:在使用UseParNewGC收集器的时候,减少标记时间MaxGCPauseMillils
含义:自适应大小策略的最大GC暂停时间,单位为毫秒 使用方式:-XX:MaxGCPauseMillils=100DisableExplicitGC
含义:禁用System.gc()触发full gc 使用方式:开启:-XX:DisableExplicitGC,关闭:-XX:-DisableExplicitGCXloggc
含义:输出GC日志文件指定路径 使用方式:-Xloggc:/use/local/gc.logUseGCLogFileRotation
含义:滚动GC日志文件,前提是配置了-Xloggc 使用方式:开启:-XX:+UseGCLogFileRotation,关闭:-XX:-UseGCLogFileRotationNumberOfGCLogFiles
含义:滚动GC日志文件数量,默认为0,不滚动 使用方式:-XX:NumberOfGCLogFiles=10GCLogFileSize
含义:GC文件滚动大小,前期是配置了UseGCLogFileRotation,设置为0表示仅通过jmd命令触发 使用方式:-XX:GCLogFileSize=10mPrintGCDetails
含义:GC时打印更多详情日志 使用方式:开启:-XX:PrintGCDetail,关闭:-XX:PrintGCDetail 解释:可以通过jinfo -flag [+|-]PrintGCDetail 来动态设置开启和关闭PrintGCDateStamps
含义:GC时打印时间戳信息 使用方式:开启:-XX:PrintGCDateStamps,关闭:-XX:-PrintGCDateStamps 解释:可以通过jinfo -flag [+|-]PrintGCDateStamps 来动态设置开启和关闭PrintTenuringDistribution
含义:打印堆中存活对象实例的GC年龄信息 使用方式:开启:-XX:PrintTenuringDistribution,关闭:-XX:-PrintTenuringDistributionPrintGCApplicationStoppedTime
含义:打印应用暂停时间 使用方式:开启:-XX:PrintGCApplicationStoppedTime,关闭:-XX:-PrintGCApplicationStoppedTimePrintHeapAtGC
含义:GC前后打印堆区使用信息 使用方式:开启:-XX:PrintHeapAtGC,关闭:-XX:-PrintHeapAtGCHeapDumpOnOutOfMemoryError
含义:抛出堆溢出错误时导出堆信息到指定文件 使用方式:开启:-XX:HeapDumpOnOutOfMemoryError,关闭:-XX:-HeapDumpOnOutOfMemoryError 解释:可以通过jinfo -flag [+|-]HeapDumpOnOutOfMemoryError 来动态设置开启和关闭HeapDumpPath
含义:当HeapDumpOnOutOfMemoryError开启的时候,dump文件的保存路径,默认为工作目录下的java_pid.hprof文件 使用方式:-XX:HeapDumpPath=/data/log/jvm.dumpErroFile
含义:保存错误日志到文件中 使用方式:-XX:ErrorFile=./error.logGCHeapFreeLimit
含义:堆空间允许空闲的临界值(这里常用于抛出JVM内存骗局,无限full gc,但是不抛出OOM的情况) 使用方式:-XX:GCHeapFreeLimit=25 解释:代表如果当前堆空闲空间小于25,那么就会抛出一个OOM错误仅供我个人做平常开发笔记记忆使用
转载地址:http://bikmi.baihongyu.com/