JVM - 调优性能相关参数

#> java -XX:+PrintFlagsInitial   -- 查看所有配置参数

 

JVM支持的性能相关选项

 

选项

描述

-Xms

初始堆的大小。如不指定,初始化大小为分配的年轻代和老年代的和。配置示例:-Xms100m

-Xmx

最大堆内存。对于服务器端部署,-Xms和-Xmx经常设置为一个值,这样可以节省程序运行过程中调整堆内存分配的耗时。配置示例:-Xmx100m

-Xmn

年轻代的初始值及最大值。官方推荐该值为堆内存的1/2~1/4之间。配置示例:-Xmn100m

-XX:NewSize=size

年轻代的初始值

-XX:MaxNewSize=size

年轻代最大值

-XX:MetaspaceSize=size

元数据空间的初始值。持久代在JDK 8版本被移除,因此-XX:PermSize已经禁用

-XX:MaxMetaspaceSize=size

分配用于类元数据的本地内存上限,默认不受限。持久代在JDK 8版本被移除,因此-XX:MaxPermSize已经禁用

-Xss

线程栈大小。默认值与平台相关。配置示例:-Xss512k

-XX:ThreadStackSize=size

等价于-Xss

-XX:NewRatio=ratio

设置年轻代和老年代大小的比值,取值为整数,默认为2

-XX:SurvivorRatio=ratio

Eden区和Survivor区大小的比值,取值为整数,默认值为8

-XX:LargePageSizeInBytes=size

堆内存的内存页大小,默认为0,表示由JVM动态选择

-XX:+DisableExplicitGC

禁用System.gc。该参数只是禁止调用System.gc,但是JVM在需要时仍旧会执行垃圾回收

-XX:MaxTenuringThreshold=threshold

在新生代中对象存活次数(经过Minor GC的次数)后仍然存活,就会晋升到旧生代。最大值15。并行收集器的默认值为15,CMS收集器的默认值为6。

-XX:+AggressiveOpts

开启新的编译器性能优化选项,默认禁用实验性优化特征。实验性特征虽然会提高性能,但是会影响稳定性。

-XX:+UseBiasedLocking

应用偏向锁,使得锁更偏爱上次使用到它的线程。在非竞争锁的场景下,即只有一个线程会锁定对象,可以实现近乎无锁的开销。

-Xnoclassgc

禁用类的垃圾回收,即类对象(Class)不会被回收

-XX:SoftRefLRUPolicyMSPerMB=time

每兆空闲堆内存中,SoftReference对象在最后一次引用后的存活时间(单位为毫秒),默认是1秒钟

-XX:MaxHeapFreeRatio=percent

垃圾回收后,堆内存空闲空间最大允许百分比,如果超过该值,堆内存将收缩。

-XX:MinHeapFreeRatio=percent

垃圾回收后,堆内存空闲空间最小允许百分比,如果低于该值,堆内存将扩大。

-XX:+ParallelRefProcEnabled

启用并行引用处理。如果应用存在大量的引用或者finalizable对象需要处理,添加该选项可以减少垃圾回收时间。

-XX:TargetSurvivorRatio=percent

设定幸存区的目标使用率。

-XX:+UseGCOverheadLimit

限定JVM耗费在GC上的时间百分比。该选项默认启用,当JVM 98%的时间用于垃圾回收并且少于2%的堆被恢复时,抛出内存溢出异常。当堆较小时,该选项可以用于避免应用长时间没响应。可以通过-XX:-UseGCOverheadLimit禁用该选项。

-XX:+UseSerialGC

启用串行收集器

 

 

 

 

 

并行收集器性能相关选项

选项

描述

-XX:+UseParallelGC

启用并行垃圾收集器,以便利用多核提升性能。如果配置了该选项,那么-XX:+UseParallelOldGC默认启用。

-XX:+UseParNewGC

年轻代采用并行收集,默认该选项禁用,但是如果设置了-XX:+UseConcMarkSweepGC选项,则会自动开启。对于仅设置该选项。但是不设置XX:+UseConcMarkSweepGC的情况,JDK8已经禁用。

-XX:+UseParallelOldGC

Full GC采用并行收集,默认禁用。如果设置了-XX:+UseParallelGC则自动启用。

-XX:ParallelGCThreads=threads

年轻代及老年代并行垃圾回收使用的线程数。默认值依赖于JVM使用的CPU个数。

-XX:MaxGCPauseMillis

垃圾回收最大暂停时间,单位为毫秒。该选项仅是一个软目标,如不满足,JVM将会自动调整堆和相关选项。

-XX:+UseAdaptiveSizePolicy

自动选择年轻代大小和相应的Survivor区比例,以达到目标系统规定的最低响应时间或者收集频率。该选项默认开启,若要禁用则需要添加-XX:-UseAdaptiveSizePolicy并且设置-XX:SurvivorRatio。对于并行收集器,建议打开该选项。

 

CMS收集器性能相关选项

选项

描述

-XX:+UseConcMarkSweepGC

对于老年代,启用CMS垃圾收集器。当并行垃圾收集器无法满足应用的延迟需求时,官方推荐使用CMS收集器或者G1收集器。启用该选项后,-XX:+UseParNewGC自动启用,且无法禁用(即不可以添加-XX:-UseParNewGC)

-XX:+AggressiveHeap

启用Java堆内存优化。该选项设置各种参数以适用于运行时间长、内存分配密集的任务,基于内存和处理器配置。默认禁用。

-XX:+UseCMSInitiatingOccupancyOnly

使用-XX:CMSInitiatingOccupancyFraction的值作为老年代的空间使用率限制来启动CMS垃圾回收。如果没有配置该选项,那么HotSpot JVM只利用这个值来启动第一次CMS垃圾回收,以后均使用HotSpot JVM自动计算的值。

-XX:CMSInitiatingOccupancyFraction=percent

设置老年代的占用百分比,当到达该值之后将启动CMS回收,格式为整数。默认为-1,如果为负数,则表示使用-XX:CMSTriggerRatio确定初始的占用比。

-XX:+CMSClassUnloadingEnabled

启用类卸载,默认启用,可以通过-XX:-CMSClassUnloadingEnabled禁用

-XX:+CMSScavengeBeforeRemark

在执行CMS remark之前进行一次Minor GC,这样能有效降低remark的时间。

 

G1收集器性能相关选项

选项

描述

-XX:+UseG1GC

启用G1收集器。G1是服务器类型的收集器,用于多核、大内存的机器。它在保持较高吞吐量的情况下,高概率满足GC暂停时间的目标。G1收集器推荐用于那些需要较大堆内存(6GB以上)并存在GC延迟需求(稳定且可预测暂停时间低于0.5秒)的应用。

-XX:InitiatingHeapOccupancyPercent=percent

设置堆内存占用比,超过该比值之后,将启动并发垃圾回收,格式为整数。

-XX:ConcGCThreads=threads

设置用于并发垃圾回收的线程数,默认值依赖于JVM使用CPU个数

-XX:G1ReservePercent=percent

设置堆内存预留空间百分比,以降低目标空间溢出的风险。默认值是10%。

-XX:G1HeapRegionSize

设置G1区域的大小,范围是1MB到32MB之间。目的是根据最小的Java堆内存划分出约2048个区域。

-XX:+UseStringDeduplication

启用重复字符串删除(String deduplication),该选项仅用于G1收集器。字符串重复数据删除利用大多数字符串相同的情况减少了字符串对象的内存足印。这种情况下,相同字符串指向并共享同一个字符数组,而非每一个字符串一个

-XX:+UseTLAB

年轻代中使用本地线程收集块。

 

 

JVM打印相关选项

选项

描述

-XX:+PrintGC

打印每次GC的信息

-XX:+PrintGCApplicationConcurrentTime

打印最后一次暂停之后所经过的时间,即应用并发执行的时间

-XX:+PrintGCApplicationStoppedTime

打印GC时应用暂停时间

-XX:+PrintGCDateStamps

打印每次GC的日期时间戳

-XX:+PrintGCDetails

打印每次GC的详细信息

-XX:+PrintGCTaskTimeStamps

打印每个GC工作线程任务的时间戳

-XX:+PrintGCTimeStamps

打印每次GC的时间戳

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值