首页 > 其他分享 >深入理解JVM(五)-JVM设置参数大全

深入理解JVM(五)-JVM设置参数大全

时间:2022-10-18 22:39:57浏览次数:64  
标签:选项 设置 禁用 XX 参数 JVM GC 大全

标准参数(-)

所有的JVM实现都必须实现这些参数的功能,而且向后兼容;命令 java -help可以列出java 应用启动时标准选项(不同的JVM实现是不同的)。

深入理解JVM(五)-JVM设置参数大全_java

标准参数比较常用的

配置参数

说明

-verbose:class

输出jvm载入类的相关信息,当jvm报告说找不到类或者类冲突时可此进行诊断。

-verbose:gc

输出每次GC的相关情况。

-verbose:jni

输出native方法调用的相关情况,一般用于诊断jni调用错误信息。

非标准参数(-X) 

默认jvm实现这些参数的功能,但是并不保证所有jvm实现都满足,且不保证向后兼容;java -X可以列出不标准的参数(这是JVM的扩展特性)。-X相关的选项不是标准的,被改变也不会通知。

深入理解JVM(五)-JVM设置参数大全_垃圾收集器_02

非标准参数比较常用的

配置参数

说明

示例

默认值

备注

-Xmx

设置JVM最大可用内存


-Xmx83886080

-Xmx81920k

-Xmx80m

物理内存的1/4

必须是1024的整数倍且大于等于2M,-Xms 和 -Xmx 通常设置为相同,-Xmx选项等同于-XX:MaxHeapSize。

-Xmn

设置年轻代初始及最大大小。

-Xmn256m

-Xmn262144k

-Xmn268435456


Oracle官方推荐将年轻一代的大小保持在堆总大小的一半到四分之一之间。Sun官方推荐配置为整个堆的3/8。也可以使用-XX:NewSize来设置初始大小,使用-XX:MaxNewSize设置最大大小

-Xms

设置JVM初始内存及最小内存。

-Xms6291456

-Xms6144k

-Xms6m

物理内存的1/64

如果不设置此选项,则初始大小将设置为为旧代和年轻代分配的大小之和。可以使用-Xmn选项或-XX:NewSize选项设置年轻代的堆的初始大小。

请注意,-XX:InitalHeapSize选项也可以用于设置初始堆大小。如果它出现在命令行上的-Xms之后,则初始堆大小将设置为-XX:InitalHeapSize指定的值。

-Xss

设置线程的栈大小

-Xss1m

-Xss1024k

-Xss1048576

默认值取决于平台

● Linux/ARM (32-bit): 320 KB

● Linux/i386 (32-bit): 320 KB

● Linux/x64 (64-bit): 1024 KB

● OS X (64-bit): 1024 KB

● Oracle Solaris/i386 (32-bit): 320 KB

● Oracle Solaris/x64 (64-bit): 1024 KB

等同于-XX:ThreadStackSize

 -Xloggc 

日志文件的输出路径。

-Xloggc:garbage-collection.log


用于记录详细的GC事件。写入此文件的信息类似于-verbose:gc的输出,其中包含自每个记录事件之前的第一个gc事件以来经过的时间。如果同时使用了-Xloggc选项,则会覆盖-verbose:gc。

非Stable参数(-XX)

此类参数各个jvm实现会有所不同,这些都是不稳定的并且不推荐在生产环境中使用。将来可能会随时取消,需要慎重使用;而且如果在新版本有什么改动也不会发布通知。

参数名称

说明

示例

默认值

备注

-XX:+HeapDumpOnOutOfMemoryError

当首次遭遇OOM时导出此时堆中相关信息


禁用

抛出Java.lang.OutOfMemoryError异常时将Java堆转储到当前目录中的文件,可以使用-XX:HeapDumpPath选项显式设置堆转储文件路径和名称。

-XX:HeapDumpPath

指定导出堆信息时的路径或文件名

-XX:HeapDumpPath=./java_pid%p.hprof


-XX:HeapDumpPath=/var/log/java/java_heapdump.hprof

当前

工作目录下,名为

java_pidpid.hprof

当-XX:+HeapDumpOnOutOfMemoryError选项开启后,当抛出OutOfMemoryError时指定dump文件生成位置

-XX:LogFile

设置写入日志数据的路径和文件名。

-XX:LogFile=/var/log/java/hotspot.log

当前工作目录中创建的,名为hotspot.log。


-XX:OnError

出现致命ERROR之后运行自定义命令

-XX:OnError="gcore %p;dbx - %p"


设置在发生不可恢复的错误时要运行的自定义命令或一系列分号分隔的命令。如果字符串包含空格,则必须用引号将其括起来。

-XX:OnOutOfMemoryError

当首次遭遇OOM时执行自定义命令









有关命令字符串的示例,请参见-XX:OnError选项的描述。

高级GC参数

参数名称

说明

示例

默认值

-XX:ActiveProcessorCount

覆盖VM用于计算其用于各种操作(如垃圾收集和ForkJoinPool)的线程池大小的CPU数。

-XX:ActiveProcessorCount=2


-XX:+AggressiveHeap

启用Java堆优化。


禁用状态,堆未优化

-XX:+AlwaysPreTouch

允许在JVM初始化期间触摸Java堆上的每个页面。即在服务启动的时候真实的分配物理内存给JVM,而不再是虚拟内存


禁用,所有页面都在JVM堆空间填充时提交

-XX:+CMSClassUnloadingEnabled

在使用CMS垃圾收集器时启用类卸载。默认情况下,此选项处于启用状态。


启用

-XX:CMSExpAvgFactor

设置在计算并发收集统计信息的指数平均值时用于加权当前样本的时间百分比(0到100)。

-XX:CMSExpAvgFactor=15

25

-XX:CMSInitiatingOccupancyFraction

设置老年代占用率的百分比(0到100),在该百分比下开始CMS收集周期。

-XX:CMSInitiatingOccupancyFraction=20

-1。

-XX:+CMSScavengeBeforeRemark

在CMS重新标记步骤之前启用清除尝试。


禁用

-XX:CMSTriggerRatio

设置在CMS收集周期开始之前分配的由-XX:MinHeapFreeRatio指定的值的百分比(0到100)。

-XX:CMSTriggerRatio=75

80

-XX:ConcGCThreads

设置用于并发GC的线程数。

-XX:ConcGCThreads=2

默认值取决于JVM可用的CPU数量。

-XX:+DisableExplicitGC

禁用使用System.gc()调用的选项。


禁用

-XX:+ExplicitGCInvokesConcurrent

允许使用

System.gc()调用

并发GC。


禁用

-XX:+ExplicitGCInvokesConcurrentAndUnloadsClasses

允许使用

System.gc()调用

并发GC

且在并发GC循环期间卸载类。


禁用

-XX:G1HeapRegionSize

设置的 G1 Region区域的大小

-XX:G1HeapRegionSize=16m

默认区域大小是根据堆大小确定的。

-XX:+G1PrintHeapRegions

允许打印有关G1采集器分配和回收的区域信息


禁用

-XX:G1ReservePercent

预留内存占堆内存比值(0到50),以减少G1收集器升级失败的可能性。

-XX:G1ReservePercent=20

10

-XX:InitialHeapSize

设置内存分配池的初始大小。此值必须为0或1024的倍数且大于等于1M,如果将此选项设置为0,则初始大小将设置为为老一代和年轻一代分配的大小之和。年轻一代的堆大小可以使用-XX:NewSize选项设置。

-XX:InitialHeapSize=6291456

-XX:InitialHeapSize=6144k

-XX:InitialHeapSize=6m

默认值是在运行时根据系统配置选择的

-XX:InitialRAMPercentage

设置JVM在容器中堆的初始内存量,作为-XX:MaxRAM选项中所述确定的最大内存量的百分比。

-XX:InitialRAMPercentage=5

1.5625

-XX:InitialSurvivorRatio

设置吞吐量垃圾收集器使用的初始生存空间比率(由-XX:+UseParallelGC和/或-XX:+UseParellelOldGC选项启用)。默认情况下,吞吐量垃圾收集器通过使用-XX:+UseParallelGC和-XX:+UseParellelOldGC选项启用自适应大小调整,并且从初始值开始,根据应用程序行为调整幸存者空间的大小。如果禁用了自适应大小调整(使用-XX:-UseAdaptiveSizePolicy选项),则应使用-XX:SurvivorRatio选项为应用程序的整个执行设置幸存者空间的大小。

-XX:InitialSurvivorRatio=4

8

-XX:InitiatingHeapOccupancyPercent

启动并发GC周期时的堆内存占用百分比

-XX:InitiatingHeapOccupancyPercent=75

45

-XX:MaxGCPauseMillis

最大GC暂停时间(毫秒)。

-XX:MaxGCPauseMillis=500


-XX:MaxHeapSize

-XX:MaxHeapSize选项等效于-Xmx。

-XX:MaxHeapSize=83886080

-XX:MaxHeapSize=81920k

-XX:MaxHeapSize=80m


-XX:MaxHeapFreeRatio

GC事件后允许的最大可用堆空间百分比(0到100)。如果可用堆空间超出此值,则堆将缩小。

-XX:MaxHeapFreeRatio=75

70

-XX:MaxMetaspaceSize

元空间最大内存。

-XX:MaxMetaspaceSize=256m

无限制

-XX:MaxNewSize

年轻代最大内存



-XX:MaxRAMPercentage

设置JVM使用容器内存的最大百分比,以-XX:MaxRAM选项中所述的最大内存的百分比表示。

-XX:MaxRAMPercentage=75

25

-XX:MaxTenuringThreshold

年轻代晋升老年代的最大年龄阈值。

-XX:MaxTenuringThreshold=10

最大值为15。parallel 收集器的默认值为15,CMS收集器为6。

-XX:MetaspaceSize

设置MetaSpace大小,该空间将在首次超过时触发垃圾收集。垃圾收集的此阈值根据使用的元数据量而增加或减少。

-XX:MetaspaceSize=20

默认大小取决于平台。

-XX:MinHeapFreeRatio

设置GC事件后允许的最小可用堆空间百分比(0到100)。

-XX:MinHeapFreeRatio=25

40

-XX:MinRAMPercentage

设置JVM在应用人体工程学启发式之前可用于Java堆的最大内存量,以小堆的-XX:MaxRAM选项中所述确定的最大内存的百分比表示。小堆是大约125 MB的堆。默认值为50%。

-XX:MinRAMPercentage=75

50

-XX:NewRatio


设置年轻代和年老代的比值。

-XX:NewRatio=1

2

-XX:NewSize

等效于-Xmn

-XX:NewSize=256m

-XX:NewSize=262144k

-XX:NewSize=268435456


-XX:ParallelGCThreads

设置年轻代和老年代中用于并行GC的线程数。

-XX:ParallelGCThreads=2

取决于JVM可用的CPU数量。

-XX:+ParallelRefProcEnabled

启用并行处理Reference对象


禁用

-XX:+PrintAdaptiveSizePolicy

允许打印有关堆自适应大小调整的信息。


禁用

-XX:+PrintGC

打印每次GC信息。


禁用

-XX:+PrintGCApplicationConcurrentTime

启用打印自上次暂停(例如,GC暂停)以来经过的时间。


禁用

-XX:+PrintGCApplicationStoppedTime

允许打印暂停(例如GC暂停)持续的时间。


禁用

-XX:+PrintGCDateStamps

允许在每次GC打印时间戳。


禁用

-XX:+PrintGCDetails

允许在每次GC时打印详细消息。。


禁用

-XX:+PrintGCTaskTimeStamps

允许打印每个GC工作线程的时间戳。


禁用

-XX:+PrintGCTimeStamps

允许在每次GC打印时间戳。


禁用

-XX:+PrintStringDeduplicationStatistics

打印重复字符串清除的详细信息。


禁用

-XX:+PrintTenuringDistribution

允许打印对象年龄信息。


禁用

-XX:+ScavengeBeforeFullGC

在每次FULL GC之前启用YOUNG GC。


启用

-XX:SoftRefLRUPolicyMSPerMB

设置软引用在上次引用后在堆上保持活动状态的时间(毫秒)。默认值是堆中每空闲兆字节一秒的生存期。

-XX:SoftRefLRUPolicyMSPerMB=2500

1000

-XX:StringDeduplicationAgeThreshold

达到指定年龄的字符串对象被视为重复数据消除的候选对象。

-XX:StringDeduplicationAgeThreshold=3

3

-XX:SurvivorRatio

设置eden和survivor大小比例。

-XX:SurvivorRatio=4

8

-XX:TargetSurvivorRatio

设置Young GC后survivor区所需空间百分比(0到100)。

-XX:TargetSurvivorRatio=30

50

-XX:TLABSize

设置本地线程分配缓冲区(TLAB)的初始大小(以字节为单位)。

-XX:TLABSize=512k


-XX:+UseAdaptiveSizePolicy

启用自适应生成大小调整。


启用

-XX:+UseCMSInitiatingOccupancyOnly

启用设定的回收阈值(–XX:CMSInitiatingOccupancyFraction

)作为启动CMS收集器的唯一标准。


禁用

-XX:+UseConcMarkSweepGC

为老年代启用CMS垃圾收集器。当Parallel收集器(-XX:+UseParallelGC)垃圾收集器无法满足应用程序延迟要求时,Oracle建议您使用CMS垃圾收集器。G1垃圾收集器(-XX:+UseG1GC)是另一种选择。


禁用

-XX:+UseG1GC

启用G1垃圾收集器。



默认情况下,此选项处于禁用状态,并根据机器的配置和JVM的类型自动选择收集器。

-XX:+UseGCOverheadLimit

在抛出OutOfMemoryError异常之前,使用一种策略,以限制JVM在GC上花费的时间比例。


启用

-XX:+UseNUMA

通过增加应用程序对低延迟内存的使用,在具有非均匀内存体系结构(NUMA)的计算机上实现应用程序的性能优化。默认情况下,


禁用

-XX:+UseParallelGC

使用Parallel垃圾收集器(也称为吞吐量收集器),通过利用多个处理器提高应用程序的性能。


禁用

-XX:+UseParallelOldGC

对Full GC使用Parallel垃圾收集器。


禁用

-XX:+UseParNewGC

在年轻代中使用

ParNew收集器

进行收集。


禁用

-XX:+UseSerialGC

启用串行垃圾回收器(Serial)的使用。


默认情况下,此选项处于禁用状态,并根据机器的配置和JVM的类型自动选择收集器。

-XX:+UseSHM

在Linux上,允许JVM使用共享内存来设置大型页面。



-XX:+UseStringDeduplication

启用字符串重复数据清除。


禁用

-XX:+UseTLAB

允许在年轻代中使用本地线程分配缓冲区(TLAB)。


启用

JDK8中不推荐和删除的配置

参数名称

说明

备注

-Xincgc

启用增量垃圾收集。JDK 8中不推荐使用此选项,没有替换项。


-Xrunlibname

加载指定的调试/分析库。此选项被-agentlib选项取代。


-XX:CMSIncrementalDutyCycle

每次增量回收垃圾的占总垃圾回收任务的比例(0到100)。

继-XX:+CMSIncrementalMode选项被弃用之后,JDK 8中不推荐使用此选项,没有替换项。

-XX:CMSIncrementalDutyCycleMin

启用-XX:+CMSIncrementalPacing时,每次增量回收垃圾的占总垃圾回收任务的最小比例

继-XX:+CMSIncrementalMode选项被弃用之后,JDK 8中不推荐使用此选项,没有替换项。

-XX:+CMSIncrementalMode

启用CMS采集器的增量模式。

JDK 8中不推荐使用此选项,没有替换项,以及以CMSIncremental开头的其他选项。

-XX:CMSIncrementalOffset

两次小回收之间的允许并发收集器运行的时间的百分比

继-XX:+CMSIncrementalMode选项被弃用之后,JDK 8中不推荐使用此选项,没有替换项。

-XX:+CMSIncrementalPacing

根据JVM运行时收集的统计信息自动调整增量模式占空比。

继-XX:+CMSIncrementalMode选项被弃用之后,JDK 8中不推荐使用此选项,没有替换项。

-XX:CMSIncrementalSafetyFactor

设置计算占空比时用于增加保守性的时间百分比(0到100)

继-XX:+CMSIncrementalMode选项被弃用之后,JDK 8中不推荐使用此选项,没有替换项。

-XX:CMSInitiatingPermOccupancyFraction

设置启动GC的永久代占用率百分比(0到100)。

JDK 8中不推荐使用此选项,没有替换项。

-XX:MaxPermSiz

设置最大永久生成空间大小(字节)。

此选项在JDK 8中已弃用,并被-XX:MaxMetaspaceSize选项取代。

-XX:PermSize

设置分配给永久生成的空间(以字节为单位),如果超过该空间,将触发垃圾收集。

此选项已在JDK 8中弃用,并被-XX:MetaspaceSize选项取代。

-XX:+UseSplitVerifier

启用验证过程的拆分。默认情况下,此选项在以前的版本中已启用,验证分为两个阶段:类型引用(由编译器执行)和类型检查(由JVM运行时执行)。

JDK 8中不推荐使用此选项,现在默认情况下,验证被分割,无法禁用它。

-XX:+UseStringCache

缓存常用字符串

此选项已从JDK 8中删除,无需更换。

标签:选项,设置,禁用,XX,参数,JVM,GC,大全
From: https://blog.51cto.com/u_14274440/5768283

相关文章

  • django之五--获取url参数和name的作用
    一、前言假如我们要打开这两个地址:会发现这两个地址的最大差别就是时间参数的值是动态的(年和月的值是动态的)。那么,如果我们想要获取地址里面的【2018】和【07】这两个值,就......
  • 如何配置EasyDSS平台参数,让同一直播间实现重复推流?
    EasyDSS视频直播点播平台集视频直播、点播、转码、管理、录像、检索、时移回看等功能于一体,可提供音视频采集、视频推拉流、播放H.265编码视频等功能,分发的视频流可覆盖全终......
  • 修改系统rp_filter参数
    rp_filter是内核的重要参数之一,该参数用于控制系统是否开启对数据包源地址的校验,定义了网卡对接收到的数据包进行反向路由验证的规则,麒麟v10系统出于安全考虑,默认值设置为1......
  • JAVA获取jvm和操作系统相关信息
    JAVA获取jvm和操作系统相关信息背景今日搬砖......
  • url参数里有文字,获取为乱码解决办法
    functiongetUrlV(){varvars=[],hash;varhashes=window.location.href.slice(window.location.href.indexOf('?')+1).split('&');for(vari......
  • influxdb1.8自身参数监控方案探索
    1.部署chronografchronograf:image:chronografports:-8888:8888environment:-INFLUXDB_URL=http://influxdb:8086volumes:-./chronograf:/var/......
  • SQL Server 函数大全
    表达式:是常量、变量、列或函数等与运算符的任意组合。以下参数中表达式类型是指表达式经运算后返回的值的类型字符串函数函数名称参数示例说明ascii......
  • 智能振弦传感器的参数智能识别技术原理
    智能振弦传感器的参数智能识别技术原理河北稳控科技在2020年就开始研发出智能振弦传感器电子标签专用读数模块模块TR01,最早应用到手持振弦采集仪VH03型上面,并申请获得了两......
  • 单个字面量/多个字面量类型的参数
    1、单个字面量类型的参数若mapper接口中的方法参数为单个的字面量类型此时可以使用${}和#{}以任意的名称获取参数的值,注意${}需要手动加单引2、多个字面量类型的参数若......
  • map集合类型/实体类类型的参数
    map集合类型的参数若mapper接口中的方法需要的参数为多个时,此时可以手动创建map集合,将这些数据放在map中只需要通过${}和#{}访问map集合的键就可以获取相对应的值,注意${......