jvm 常用参数

用途适用GC回收器参数名使用方式参数说明
Xss-Xss256K设置线程栈大小,等价于-XX:ThreadStackSize=256k
堆内存Xms-Xms100M设置虚拟机最小堆内存,等价于-XX:InitialHeapSize=100M
Xmx-Xmx200M设置虚拟机最大堆内存,等价于-XX:MaxHeapSize=200M
Xmn-Xmn2G设置年轻代的大小,官方推荐配置为整个堆大小的3/8,等价于同时设置-XX:NewSize和-XX:MaxNewSize
NewSize-XX:NewSize=1024m设置年轻代初始值为1024M
MaxNewSize-XX:MaxNewSize=1024m设置年轻代最大值为1024
SurvivorRatio-XX:SurvivorRatio=8设置Eden区和Survivor区的比例,默认值为8,如果新生代内存为10M,那么他们之间的比例是:8:1:1
1、只有显示使用 Eden区和Survivor区的比例,才会让比例生效,否则比例都会自动设置,至于其中的原因,请看下面的-XX:+UseAdaptiveSizePolicy 中的解释,最后 推荐使用默认打开的-XX:+UseAdaptiveSizePolicy 设置,并且不显示设置-XX:SurvivorRatio
UseAdaptiveSizePolicy-XX:+UseAdaptiveSizePolicy设置Parallel Scavenge收集器具有自适应调节策略,自动选择各区大小比例,默认开启
1、在这种模式下,年轻代的大小,Eden和Survivor的比例、晋升老年代的对象年龄等参数会被自动调整,已达到在堆大小、吞吐最和停顺时间之间内平衡点。
2、在手动调优比较因难的场合,可以直接使用这种自适应的方式。仅指定虛拟机的最大堆,目标的吞吐量(GCTimeRatio)和停顿时间 (MaxGCPauseMills),让虚拟机自己完成调优工作。
NewRatio-XX:NewRatio=5设置老年代和新生代的比例,默认值为2,这里比例是5:1,如果堆内存为100M,那么老年代占5/6,新生代占1/6
PretenureSizeThreshold-XX:PretenureSizeThreshold=1024指定对象占用的字节数超过n之后直接在老年代中分配,默认值0,表示最大值。
设置让大于此阈值的对象直接分配在老年代,单位为字节,只对Serial、ParNew收集器有效。
MaxTenuringThreshold-XX:MaxTenuringThreshold=15设定新生代的对象在经历多少次minor gc之后将转移到老年代,默认是15。

新生代每次MinorGC后,还存活的对象年龄+1,当对象的年龄大于设置的这个值时就进入老年代。
PrintTenuringDistribution-XX:+PrintTenuringDistribution让JVM在每次MinorGC后打印出当前使用的Survivor中对象的年龄分布
TargetSurvivorRatio-XX:TargetSurvivorRatio=50垃圾收集后,表示MinorGC结束后Survivor区域中占用空间的期望比例,默认期望清理后能空出50%的空间
方法区永久代PermSize-XX:PermSize=256M设置永久代初始值为256M
MaxPermSize-XX:MaxPermSize=256m设置永久代最大值为256M
元空间MetaspaceSize-XX:MetaspaceSize=100MJDK8中使用,指定元数据区大小
MaxMetaspaceSize-XX:MaxMetaspaceSize=1024m设置元空间的最大大小,默认大小无限制
UseCompressedOops-XX:+UseCompressedOops开启压缩指针,压缩指针主要是为了解决32位操作系统内存寻址范围只有4G的限制,开启压缩指针最大寻址范围增加到32G;如果内存超过32G(Xmx>32G),开启该参数无效
UseCompressedClassPointers-XX:+UseCompressedClassPointers使用压缩类指针
CompressedClassSpaceSize-XX:CompressedClassSpaceSize设置Klass Metaspace的大小,默认1G
直接内存MaxDirectMemorySize-XX:MaxDirectMemorySize=5G设置直接内存的大小,在使用一些nio框架时最好设置一下此参数,此参数如果过小也有可能导致频繁触发FGC
OutOfMemoryHeapDumpOnOutOfMemoryError-XX:+HeapDumpOnOutOfMemoryError表示在内存出现OOM的时候,生成Heap转储文件,以便后续分析,-XX:+HeapDumpBeforeFullGC和-XX:+HeapDumpOnOutMemoryError只能设置1个
HeapDumpBeforeFullGC-XX:+HeapDumpBeforeFullGC在执行一次FGC之前打印出Heap到文件,这两个参数主要用于调试
HeapDumpPath-XX:HeapDumpPath=/tmp/dump.hprofdump文件路径
OnOutOfMemoryError-XX:OnOutOfMemoryError指定一个可行性程序或者脚本的路径,当发生OOM的时候,去执行这个脚本,-XX:OnOutOfMemoryError=/opt/Server/restart.sh
ScavengeBeforeFullGC-XX:+ScavengeBeforeFullGC在Full GC前触发一次Minor GC
UseFastAccessorMethods-XX:+UseFastAccessorMethods默认启用,优化原始类型的getter方法性能(get/set:Primitive Type)
打印设置的XX选项及值查看使用回收器PrintCommandLineFlags-XX:+PrintCommandLineFlagsjinfo -flag 相关垃圾回收器参数 进程ID,可以让程序运行前打印出用户手动设置或者JVM自动设置的XX选项
PrintFlagsInitial-XX:+PrintFlagsInitial表示打印出所有XX选项的默认值
PrintFlagsFinal-XX:+PrintFlagsFinal打印出XX选项在运行程序时生效的值 java -XX:+PrintFlagsFinal -version
PrintVMOptions-XX:+PrintVMOptions打印JVM的参数
收集器相关选项Serial回收器UseSerialGC-XX:+UseSerialGC指定使用串行垃圾收集器,新生代及老年代都是串行收集,在大堆或者多核cpu的环境中不大适合使用该种垃圾收集器
Parnew回收器UseParNewGC-XX:+UseParNewGC新生代使用ParNew收集器
ParallelGCThreads-XX:ParallelGCThreads=20设置并行收集线程数,STW期间 ,设置年轻代并行收集器的线程数。一般地, 最好与CPU数量相等,以避免过多的线程数影响垃圾收集性能。
在默认情况下,当CPU 数量小于8个,ParallelGCThreasd的值等于 CPU 数量。
当CPU数量大于8个,ParallelGCThreads 的值等于
3+[5*CPU_Count] / 8]
Parallel回收器UseParallelGC-XX:+UseParallelGC并行垃圾收集器,新生代使用并行收集,老年代使用串行收集,手动指定车轻代使用Parallel并行收集器热行内存回收任务。
UseParallelOldGC-XX:+UseParallelOldGC手动指定老年代都是使用并行回收收集器。分别适用于新生代和老年代。默认jdk8是开启的。上面两个参数,默认开启一个,另一个也会被开启。(互相激活)
并行垃圾收器,新生代使用并行手机,老年代使用并行收集,在一些低版本的JVM该参数不支持或者不生效,这两种垃圾收集适合不在乎延时需要高吞吐的环境下使用,比如说一些批处理程序。
ParallelGCThreads-XX:ParallelGCThreads=20设置并行收集线程数,STW期间 ,设置年轻代并行收集器的线程数。一般地, 最好与CPU数量相等,以避免过多的线程数影响垃圾收集性能。
在默认情况下,当CPU 数量小于8个,ParallelGCThreasd的值等于 CPU 数量。
当CPU数量大于8个,ParallelGCThreads 的值等于
3+[5*CPU_Count] / 8]
MaxGCPauseMillis-XX:MaxGCPauseMillis=1001、设置最大gc停顿时间,这个时间不是设置的越小越好,在G1里,对于Young GC来说,会逐渐减少Eden区个数,对于Mixed GC,G1会调整每次Choose Cset的比例,但次数会增加。
2、为了尽可能地把停顿时间控制在MaxGCPausewills以内,收集器在工作时会调整Java 堆大小或者其他一些参数。
3、对于用户來讲,停顿时间越短体验越好。但是在服务器端,我们注重高并发,整体的吞吐量。所以服务器端适合Parallel,进行控制。
(该参数使用需谨慎。)
GCTimeRatio-XX:GCTimeRatio设置垃圾收集时间占总时间的比率,默认为99,也就是说垃圾收集时间占用总时间的1%,此参数只在ps收集器上有效。
1、垃圾收集时间占总时间的比例(=1 /(N + 1))。用于衡量吞吐量的大小。
2、取值范围(0,100)。默认值99,也就是垃圾回收时间不超过1%。
3、与前一个-XX:MaxGCPauseMillis参数有一定矛盾性。暂停时间越长,Radio参数就容易超过设定的比例。
CMS回收器UseConcMarkSweepGC-XX:+UseConcMarkSweepGC1、并发垃圾收集,新生代使用并行收集,老年代采用并发收集,适合低延迟应用使用该种垃圾器。使用并发垃圾收集,相当于自动添加了参数-XX:+UseParNewGC。
2、开启该参数后会自动将-XX:+UseParNewGC打开。即:ParNew(Young区用)+CMS(Old区用 )+Serial Old的组合。
CMSInitiatingOccupancyFraction-XX:CMSInitiatingOccupancyFraction=80设置CMS垃圾收集器启动回收老年代的时机,当老年代对象占比超过n时,就启动一次CMS回收周期,注意:这个参数只是设定首次CMS垃圾回收

1、JDK5及以前版本的默认值为68,即当老年代的空间使用率达到68%时,会执行一次CMS回收。JDK6及以上版本默认值为92%
2、如果内存增长缓慢,则可以设置一个稍大的值,大的阀值可以有效降低CMS的触发频律,减少老年代回收的次数可以较为明显地改善应用程序性能。反之,如果应用程序内存使用率增长很快,则应该降低这个阀值,以避免频繁触发老年代串行收集器。因此通过该选项便可以有效降低Full GC 的执行次数。
UseCMSCompactAtFullCollection-XX:+UseCMSCompactAtFullCollection表示在FGC之后进行压缩,因为CMS默认不压缩空间的,以此避免内存碎片的产生。不过由于内存压缩整理过程无法并发执行,所带来的问题就是停顿时间变得更长了。
CMSFullGCsBeforeCompaction-XX:CMSFullGCsBeforeCompaction=5由于并发收集器不对内存空间进行压缩、整理,所以运行一段时间后会产生“碎片”,使得运行效率降低。此值设置运行多少次GC以后对内存空间进行压缩、整理
ParallelCMSThreads-XX:ParallelCMSThreads设置CMS的线程数量。
CMS 默认启动的线程数是(ParallelGCThreads+3)/4。 ParallelGCThreads 是年经代并行收集器的线程数。当CPU 资源比较紧张时,受到CMS收集器线程的影响,应用程序的性能在垃圾回收阶段可能会非常糟糕。
ConcGCThreads-XX:ConcGCThreads=10设置并发垃圾收集的线程数,非STW期间,默认是-XX:ParallelGCThreads/4
UseCMSInitiatingOccupancyOnly-XX:+UseCMSInitiatingOccupancyOnly使用这个参数可以使CMS一直按照CMSInitiatingOccupancyFraction设定的值启动
CMSScavengeBeforeRemark-XX:+CMSScavengeBeforeRemark强制hotspot虚拟机在cms remark阶段之前做一次minor gc,用于提高remark阶段的速度
CMSClassUnloadingEnabled-XX:+CMSClassUnloadingEnabled开启CMS回收Perm区选项
CMSParallelInitialEnabled-XX:+CMSParallelInitialEnabled用于开启CMS initial-mark阶段采用多线程的方式进行标记,用于提高标记速度,在Java8开始已经默认开启
CMSParallelRemarkEnabled-XX:+CMSParallelRemarkEnabled用户开启CMS remark阶段采用多线程的方式进行重新标记,默认开启
ExplicitGCInvokesConcurrent-XX:+ExplicitGCInvokesConcurrent-XX:+ExplicitGCInvokesConcurrentAndUnloadsClasses这两个参数用户指定hotspot虚拟在执行System.gc()时使用CMS周期
CMSPrecleaningEnabled-XX:+CMSPrecleaningEnabled指定CMS是否需要进行Pre cleaning这个阶段,这个阶段的主要工作是:1、在并发标记阶段阶段由于业务线程同步在跑,新生代中对象有可能引用到老年代的对象,产生新的引用关系,这个时候需要重新标记出老年代中被引用的对象;2、老年代中对象引用关系发生变化,这个需要把引用关系发生变化的卡表(card table)标记为dirty,提高remark标记的效率
CMSInitiatingPermOccupancyFraction-XX:CMSInitiatingPermOccupancyFraction=80设置永久代内存占比超过n启动cms回收,此参数需要配合参数-XX:+CMSClassUnloadingEnabled一起使用(Java8默认开启)
CMSMaxAbortablePrecleanTime-XX:CMSMaxAbortablePrecleanTime=5000设置CMS-concurrent-abortable-preclean阶段最长持续时间,单位为ms,默认值5s。abortable prelean阶段默认在Eden区大于2M启动(通过参数:-XX:CMSScheduleRemarkEdenSizeThreshold =n设置),直到Eden区域占用率超过50%(通过参数:-XX:CMSScheduleRemarkEdenPenetration=n)时结束,同时还可以指定参数-XX:CMSMaxAbortablePrecleanLoops=n设置该阶段的循环次数(默认0,表示不限制次数),为了防止abortable pre clean阶段陷入无限等待,故设置一个最长的持续时间,达到最长持续时间之后,该阶段终止,进入remark阶段
CMSScheduleRemarkEdenSizeThreshold-XX:CMSScheduleRemarkEdenSizeThreshold=2CMS-concurrent-abortable-preclean的启动时机,默认Eden区占用超过2M时启动
CMSScheduleRemarkEdenPenetration-XX:CMSScheduleRemarkEdenPenetration=50CMS-concurrent-abortable-preclean的结束时机,默认Eden区占用超过50%时停止
CMSParallelInitialMarkEnabled-XX:+CMSParallelInitialMarkEnabled开启初始标记过程中的并行化,进一步提升初始化标记效率
G1回收器如果使用G1垃圾收集器,不建议设置-Xmn和-XX:NewRatio,毕竟可能影响G1的自动调节
UseG1GC-XX:+UseG1GC使用G1垃圾收集,该种垃圾收集器比较复杂,目前在此种垃圾收集的调优经验较少,在需要大堆的应用可以考虑使用,相比并发垃圾收集器,其产生的碎片更少,且可以通过参数控制垃圾收集过程中的停顿时间
G1HeapRegionSize-XX:G1HeapRegionSize=16M设置每个Region的大小。值是2的幂,范围是1MB到32MB之间,目标是根据最小的Java堆大小划分出约2048个区域。默认是堆内存的1/2000。
MaxGCPauseMillis-XX:MaxGCPauseMillis=200设置期望达到的最大GC停顿时间指标(JVM会尽力实现,但不保证达到)。默认值是200ms
ParallelGCThreads-XX:ParallelGCThreads=8设置并行收集线程数,STW期间 ,设置年轻代并行收集器的线程数。一般地, 最好与CPU数量相等,以避免过多的线程数影响垃圾收集性能。
在默认情况下,当CPU 数量小于8个,ParallelGCThreasd的值等于 CPU 数量。
当CPU数量大于8个,ParallelGCThreads 的值等于
3+[5*CPU_Count] / 8]
ConcGCThreads-XX:ConcGCThreads=2设置并发标记的线程数。将n设置为并行垃圾回收线程数(ParallelGCThreads)的1/4左右。
initiatingHeapOccupancyPercent-XX:initiatingHeapOccupancyPercent=301、设置触发并发GC周期的Java堆占用率阀值。超过此值,就触发GC。默认值是45。
2、设置堆占用率的百分比(0到100) 达到这个数值的时候触发global concurrent markirg(全局并发标记),默认为 45%。值为0表示间断进行全局并发标记。
G1NewSizePercent-XX:G1NewSizePercent=10新生代的比例,G1会根据停顿时间的要求,动态调整大小,主要是调整region的个数,最大不超过-XX:G1MaxNewSizePercent(新生代占用整个堆内存的最小百分比(默认5%)、最大百分比(默认60%))
G1MaxNewSizePercent-XX:G1MaxNewSizePercent=60新生代的最大比例,G1会根据停顿时间的要求,动态调整大小,主要是调整region的个数
G1ReservePercent-XX:G1ReservePercent=10假天花板数量,作用是预留10%的空间不使用,留给并发周期过程中当可能会出现to-space exhausted的问题时候使用,防止出现to-space exhausted,预留过多可能会导致内存浪费
G1MixedGCLiveThresholdPercent-XX:G1MixedGCLiveThresholdPercent=651、表示每个Region存活对象内存的占比,如果一个Region内存活对象内存大小超过设置的值,则不会被选入CSet,也就不会被回收,如果想MixedGC更提前可以适当提高此值。
2、设置Old区的region被回收时候的对象占比,默认占用率为85%。只有Old区的region中存活的对象占用达到了这个百分比,才会在Mixed GC中被回收。
G1HeapWastePercent-XX:G1HeapWastePercent=51、原意表示可以浪费的百分比,通过查看源码得知,如果可回收字节数百分比小于此值,则不进行Mixed回收,在源码G1CollectorPolicy::next_gc_should_be_mixed里。
2、在global concurrent marking(全局并发标记) 结束之后,可以知道所有的区有多少空间要被回收,在每次young GC之后和再次发生Mixed GC之前,会检查垃圾占比是否达到此参数,只有达到了,下次才会发生 Mixed GC。
G1MixedGCCountTarget-XX:G1MixedGCCountTarget一次global concurrent marking(全局并发标记)之后,最多执行Mixed GC的次数,默认是8。
G1OldCSetRegionThresholdPercent-XX:G1OldCSetRegionThresholdPercent=30通过这个参数指定每轮Mixed GC回收的Region最大比例,默认10%,也就是每轮Mixed GC附加的Cset的Region不超过全部Region的10%,最多10%,如果暂停时间短,那么可能会少于10%,增大此值可以减少mixed的次数,但对应停顿时间有所增加
G1PrintRegionLivenessInfo-XX:+G1PrintRegionLivenessInfo打印堆内存里每个Region的存活对象信息。这个信息在标记结束后打印出来。这是一个实验性的标志。
G1TraceConcRefinement-XX:+G1TraceConcRefinement如果启用,并行回收阶段的日志就会被详细打印出来;这是一个实验性的标志。
G1TraceEagerReclaimHumongousObject-XX:+G1TraceEagerReclaimHumongousObject如果启用,会打印大对象的回收日志;这是一个实验性的标志。
安全点SafepointTimeout-XX:+SafepointTimeout如果未能到达安全点,则在安全点超时后超时并发出警告或失败
SafepointTimeoutDelay-XX:SafepointTimeoutDelay=500设置进入安全点的超时时间,超时则失败,会打印相关线程信息,以毫秒计
GC日志相关选项常用参数PrintGCDetails-XX:+PrintGCDetails开关参数,打印虚拟机GC详细日志,在发生垃圾回收时打印内存回收详细的日志,
并在进程退出时输出当前内存各区域的分配情况
PrintGCDateStamps-XX:+PrintGCDateStamps输出GC的时间戳(以日期的形式,如 2013-05-04T21:53:59.234+0800),不可以独立使用,可以配合-XX:+PrintGCDetails使用
PrintGCTimeStamps-XX:+PrintGCTimeStamps输出GC的时间戳(以基准时间的形式),程序启动到GC发生的时间秒数,不可以独立使用,可以配合-XX:+PrintGCDetails使用
PrintHeapAtGC-XX:+PrintHeapAtGC打印gc前后堆详细信息,不管是minor gc还是full gc都会打印
Xloggc-Xloggc:/tmp/xx.logGC日志路径
其他参数TraceClassLoading-XX:TraceClassLoading监控类的加载
PrintGCApplicationStoppedTime-XX:PrintGCApplicationStoppedTime打印JVM的停顿时间(不仅是GC),例如:2016-08-22T00:19:49.559+0800: 219.140: Total time for which application threads were stopped: 0.0053630 seconds
PrintGCApplicationConcurrentTime-XX:+PrintGCApplicationConcurrentTime打印每次垃圾回收前,程序未中断的执行时间。可与上面混合使用。例如:Application time: 0.5291524 seconds
PrintReferenceGC-XX:+PrintReferenceGC打印gc时处理的reference情况,记录回收了多少种不同引用类型的引用
UseGCLogFileRotation-XX:+UseGCLogFileRotation设置GC日志滚动,启用GC日志文件的自动转储
NumberOfGCLogFiles-XX:NumberOfGCLogFiles=1GC日志文件的循环数目
GCLogFileSize-XX:GCLogFileSize=4M设置GC日志滚动大小,为了防止单个gc日志文件太大,生产上建议加上这两个参数
ErrorFile-XX:ErrorFile=/tmp/error.log设置JVM crash时生成crash文件的路径
PrintSafepointStatistics-XX:+PrintSafepointStatistics打印安全点统计信息,例如:vmop [threads: total initially_running wait_to_block] 1913.425: GenCollectForAllocation [ 55 2 0 ]
PrintSafepointStatisticsCount-XX:PrintSafepointStatisticsCount=1设置打印安全点统计信息的次数,例如:[time: spin block sync cleanup vmop] page_trap_count [ 0 0 0 0 6 ] 0
PrintAdaptiveSizePolicy-XX:+PrintAdaptiveSizePolicy可以打印出survivor的一些详细信息,关于survivor区间是否溢出,是否有对象转移到老年代
PrintTLAB-XX:+PrintTLAB打印TLAB的使用情况
DisplayVMOutput-XX:-DisplayVMOutput关闭在控制台输出vm信息
LogVMOutput-XX:+LogVMOutput将VM输出保存到日志文件, 一般是结合以下一起用 -XX:+UnlockDiagnosticVMOptions -XX:-DisplayVMOutput -XX:+LogVMOutput -XX:LogFile=/dev/shm/vm.log
LogFile-XX:LogFile=/dev/shm/vmoutput.log将VM输出保存在该日志文件下
其他参数DisableExplicitGC-XX:+DisableExplicitGC禁止在运行期显式地调用System.gc()
UseCodeCacheFlushing-XX:+UseCodeCacheFlushing使用该参数让jvm放弃一些被编译的代码,
避免代码缓存被占满时JVM切换到interpreted-only的情况
DoEscapeAnalysis-XX:+DoEscapeAnalysis是否开启逃逸分析,默认开启,关闭使用-XX:-DoEscapeAnalysis
UseBiasedLocking-XX:+UseBiasedLocking开启偏向锁,偏向锁是是锁偏向上次使用它的线程,在非竞争锁的场景下,可以实现无锁的开销
UseLargePages-XX:+UseLargePages开启使用大页面,使用大页面可以提高TLB(translation lookaside buffer(转换后备缓存区))的缓存命中率
TLABSize-XX:TLABSize设置TLAB大小
OmitStackTraceInFastThrow-XX:+OmitStackTraceInFastThrow一些频繁抛出的异常,JVM为了性能优化而抛出没有堆栈的异常,默认开启
LargePageSizeInBytes-XX:LargePageSizeInBytes=4m设置堆的内存页大小
SoftRefLRUPolicyMSPerMB-XX:SoftRefLRUPolicyMSPerMB=0指定每兆堆空闲空间的 soft reference 保持存活(一旦它不强可达了)的毫秒数,这意味着每兆堆中的空闲空间中的 soft reference 会(在最后一个强引用被回收之后)存活1秒钟。注意,这是一个近似的值,因为 soft reference 只会在垃圾回收时才会被清除,而垃圾回收并不总在发生。系统默认为一秒。
HeapDumpAfterFullGC-XX:+HeapDumpAfterFullGC在执行一次FGC之后打印出Heap到文件
AlwaysPreTouch-XX:+AlwaysPreTouch服务启动时就申请物理内存 Pre-touch the Java heap during JVM initialization. Every page of the heap is thus demand-zeroed during initialization rather than incrementally during application execution.
PerfDisableSharedMem-XX:+PerfDisableSharedMem将性能数据存储在标准内存中,Cassandra家的一个参数,一直没留意,直到发生高IO时的JVM停顿。原来JVM经常会默默的在/tmp/hperf 目录写上一点statistics数据,如果刚好遇到PageCache刷盘,把文件阻塞了,就不能结束这个Stop the World的安全点了。用此参数可以禁止JVM写statistics数据,代价是jps, jstat 用不了,只能用JMX取数据。有时用JMX取新生代老生代使用百分比还真没jstat方便
ParallelRefProcEnabled-XX:+ParallelRefProcEnabled使用此参数激活多线程方式的引用处理,截止到目前的jdk8该参数默认关闭,如果在gc中发现处理ref处理的时间过长,可以通过参数-XX:+PrintReferenceGC打印出每次垃圾收集中记录每个引用对象类型的统计数据,另外如果发现有大量软引用正在被处理,可以使用参数-XX:SoftRefLRUPolicyPerMB调整软件用的处理策略,该参数的默认值为1000(ms),该参数的含义是,使用该参数设置的值乘以java堆可用空间(以兆为单位)的出来的值,若软引用在这段时间内没有被访问,那么这些软引用将会被回收,调优引用处理的目标主要有两点:第一是降低引用在gc过程中处理时间,第二是降低heap的占用空间,减少垃圾收集频率和最终需要复制的时间
FlightRecorder-XX:+FlightRecorder允许应用程序启用飞行记录器,需要先解锁商业功能特性,-XX:+UnlockCommercialFeatures
UnlockCommercialFeatures-XX:+UnlockCommercialFeatures解锁商业功能特性
UnlockExperimentalVMOptions-XX:+UnlockExperimentalVMOptions解锁实验型VM选项,解锁后实验型VM选项可以正常使用
UnlockDiagnosticVMOptions-XX:+UnlockDiagnosticVMOptions解锁诊断型JVM参数,解锁后,诊断型VM选项可以正常使用
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值