java 初始化duration_G1 Garbage Collector 及JVM 参数说明(持续更新)

注:Remembered Sets(RSets)是每一个region里面帮助G1 GC追踪外部指向这个region的引用。因此现在,取代因为引用指向这个region扫描整个heap区,G1只需要扫描RSets。

HopSpot 提供的几种运行模式:

模式

选项指定

描述说明

备注

解释模式

-Xint

让JVM以解释模式运行Java程序

编译模式

-Xcomp

让JVM以编译模式运行Java程序

混合模式

-Xmixed

让JVM以解释+编译模式运行Java程序。默认方式

================ Java8  JVM 可选项================

可选项

默认值

解释说明

备注

-XX:MetaspaceSize

metaspace 初始容量.Metaspace  区域为 Java 1.8 新增,去 1.7 永久代的替代参数。并不是所有的永久代数据都放置在metaspace 区域,只有类消息是放置在metaspace, 其他信息都在堆上

-XX:MaxMetaspaceSize

metaspace 区的最大容量

-XX:G1NewSizePercent

8

G1 的Young 区是通过算法自动适应确定的。Young区GC的耗时来确定之后的Young大小,如果耗时过长,则调小Young区,耗时过短,则调大Young区.

-XX:G1RSetUpdatingPauseTimePercent

G1 收集器进行GC的时候,更新 RSet 的目标时间值;注:为了让评估暂停阶段把大量的时间花费在拷贝存活对象上。如果改变了花费在更新RSet上的时间,那就必须有确定工作线程可以在回收暂停阶段完成它们的工作;如果不能,那这部分工作就会被放到 Refinement 线程里面去执行,导致并行工作量增加,并行回收次数增多。

-XX:G1MixedGCCountTarget

当占用内存超过InitiatingHeapOccupancyPercent阀值时, 最多通过多少次Mixed GC来将内存控制在阀值之下.

-XX:G1HeapRegionSize

表示G1 垃圾收集器将每个Region切分成多大;每个 Region最大不超过 32M(2 的指数),

-XX:+G1SummarizeRSetStats

统计RSet 的密度数量(细粒度或者粗粒度),这个密度帮助决定是否并行 Refinement线程有能力去应对更新缓存的工作,并且手机更多关于 Nmethods的信息。这个选项每隔 n 次 GC 暂停收集一次 RSet 的统计信息, 这个 N 次 由选项  -XX:G1SummarizeRSetStatsPeriod=n 决定,也是需要通过选项进行设置的。

-XX:G1SummarizeRSetStatsPeriod=n

n

-XX:G1NewSizePercent

5%

初始化年轻代占用整个堆内存的百分比

-XX:G1MaxNewSizePercent

60%

年轻代的上升空间,即最大可以占用堆内存的百分比。

-XX:StringTableSize

-XX:+PrintStringTableStatistics

打印 StringTable 的统计信息

-XX:+NoOmitFramePointer

-XX:+PreserveFramePointer

-XX:+PrintStringTableStatistics

在JVM进程退出时,打印出StringTable的统计信息到标准日志输出目录中。

-XX:+UseCMSCompactAtFullCollection

默认是开启的;开启内存碎片的合并整理过程

-XX:CMSFullGCsBeforeCompaction

设置执行多少次不压缩的FULL GC后,紧接着执行一次碎片整理

-XX:+CMSParallelRemarkEnabled

启用并发标记

-XX:+CMSScavengeBeforeRemark

如果 remark 时间过长,开启该选项可以强制  remark 之前开启一次 minor gc , 以减少 remark 暂停时间。但是在 remark 之后立即开始一次 minor gc.

-XX:MaxGCPauseMills

设置垃圾收集器,最大停顿时间

-XX:GCTimeRatio

设置吞吐量的大小。可选值为 1 -- 100 之间,假设 GCTimeRatio 的值为 n,那么系统将花费不超过 1/(1+n) 的时间用于垃圾收集。

-XX:InitiatingHeapOccupancyPercent

当占用内存超过这个百分比的时候, G1 垃圾收集器开始执行多次Mixed GC来整理老年代内存碎片.

-XX:PrintFlagsWithComments

-XX:PrintVMOptions

-XX:PrintFlagsInitial

-XX:ManagementServer

可选项

默认值

解释说明

-XX:+ExplicitGCInvokesConcurrent

None

指定System.gc()采用 CMS 算法,FGC时停机时间会变短,但是CMS GC次数不会变。

-XX:-UseBiasedLocking

启用

关闭偏向锁

-XX:+PerfDisableSharedMem

启用

是否允许写统计文件。由于参数里面带有 Disable,关闭的意思就是允许写统计文件,启用的意思就是禁止写统计文件,注意不要把它理解反了;

-Dsun.rmi.dgc.client.gcInterval=36000000

-Dsun.rmi.dgc.server.gcInterval=36000000

rmi默认一小时主动触发一次,这里可以将配置为10小时;

注意:CMS initial-mark 和 CMS remark 都会导致  stop-the-world。 故在 jstat 查看 FGC 参数值时,会出现 +2 的情况。

================OS模块初始化相关的VM配置、调试选项================

可选项

默认值

解释说明

-XX:+UseNUMA

false

使用 NUMA

-XX:+UseLargePages

true

使用大页内存

-XX:+UseSHM

false

使用 SYSV 共享内存

-XX:+MaxFDLimit

true

最大文件描述数量

-XX:+PerfAllowAtExitRegistration

false

允许向系统注册 atexit 函数

-XX:+PrintMicellaneous

false

输出未分类的调试信息(需要开启Verbose)

================ OOP 相关 VM 选项 ================

可选项

默认值

解释说明

-XX:UseCompressedOops

false

在64位 VM 中使用开启压缩OOPS,用32位指针指向类元数据(仅限64位VM)

-XX:CheckCompressedOops

true

对压缩OOPS开启校验

-XX:CompactFields

true

字段压实

-XX:PrintCompactFieldsSavings

false

输出开启CompactFields后,节省了多少字节空间

-XX:FieldsAllocationStyle

1

域分配策略

================ VM 选项:类加载相关 ================

可选项

默认值

解释说明

-XX:TraceClassLoading

false

跟踪所有类加载过程

-XX:TraceClassLoadingPreorder

false

跟踪所有类在载入前的过程

-XX:TraceClassInitialization

false

跟踪类初始化过程

-XX:TraceClassResolution

false

跟着常量池解析过程

-XX:TraceClassUnloading

false

跟踪类卸载过程

-XX:TraceLoaderConstraints

false

跟着加载器约束

-XX:PrintSystemDictionaryAtExit

false

输出系统字典信息

-XX:PrintClassStatistics

false

输出类统计信息

-XX:MustCallLoadClassInternal

false

loadClassInternal() 替代 loadClass()

-XX:LoadLineNumberTables

true

类文件解析器是否加载代码行号表

-XX: LoadLocalVariableTables

true

类文件解析器是否加载局部变量表

-XX:LoadLocalVariableTypeTables

true

类文件解析器是否加载局部变量类型表

-XX:LinkWellKnownClasses

false

解析熟知类

-XX:LazyBootClassLoader

true

是否延迟打开启动类路径

-XX:CompileTheWorldPreloadClasses

true

加载一个类时,是否预加载其用到的所有类

-XX:ClassUnloading

true

类卸载

-XX:AlwaysLockClassLoader

false

要求VM在调用 loadClass()前先获得类加载器锁

-XX:UnsyncloadClass

false

非同步方式调用 loadClass()

================ VM 选项:类验证相关 ================

可选项

默认值

解释说明

-XX:BytecodeVerificationLocal

false

开启对本地类的字节码验证

-XX:BytecodeVerificationRemote

true

开启对远程类的字节码验证

-XX:UseSplitVerifier

true

对 StackMap Table 属性应用 split verifier

-XX:FailOverToDidVerfier

true

当对 StackMapTable属性应用 split verifier 校验失败时,回到旧的 verifier。

================ VM 选项:GC 日志相关 ================

可选项

默认值

解释说明

-XX:PrintGC

false

等同于 "-verbose:gc"

-XX:PrintGCDetail

GC 时输出更多细节信息

-XXPrintGCDateStamps

false

GC操作的日期信息,相对于时间戳,这个是 GST 时间

-XXPrintGCTimeStamps

false

GC 时的时间戳信息

-XX:PrintGCTaskTimeStamps

false

输出每个 GC 工作线程的时间戳信息

-Xloggc:

输出GC 日志至文件

-XX:+UseGCLogFileRotation

启用GC日志文件的自动转储

-XX:+PrintTenuringDistribution

-XX:+PrintGCApplicationStoppedTime

-XX:CMSWaitDuration

2s

扫描Old区时间间隔

-XX:CMSInitiatingOccupancyFraction

65

Old区占比超过参数执行 GC 操作

-XX:+UseCMSInitiatingOccupancyOnly

配合上面参数使用,只有 old 区,占比条件满足情况下,才触发CMS GC

-XX:PrintFLSStatistics

打印每次gc前后的Heap余量。较大的余量,可以怀疑Heap中存在内存碎片过多

-XX:+ExplicitGCInvokesConcurrent

将System.gc转为background式的回收

================ VM 选项:GC 安全点相关 ================

可选项

默认值

解释说明

-XX:PrintGCApplicationConcurrentTime

false

默认值false, 应用程序运行时间

-XX:PrintGCApplicationStoppedTime

false

应用程序暂停时间,在以安全点开始的操作中,线程停顿时间

-XX:ShowSafepointMsgs

false

显示关于 安全点的信息

-XX:PrintSafepointStatisticsCount

300

-XX:PrintSafepointStatisticsTimeout

-1

输出关于安全点的统计信息

-XX:+PrintSafepointStatistics

300

应用程序暂停原因

================ VM 选项:CMS 配置选项 ================

可选项

默认值

解释说明

-XX:UseConcMarkSweepGC

false

对老年代使用并发标记-清除(CMS)回收

-XX:CMSIncrementalMode

false

增量模式

-XX:CMSIncrementalPacing

true

增量模式自动调整

-XX:ParallelGCThreads

0

并行执行的GC线程数量

-XX:UseParNewGC

false

对新生代使用并行线程手机,以配合CMS老年代手机。即使不开启该选项,当选择CMS后,新生代默认也会使用ParNew。

【参考资料】

1.[Oracle 官网文档]. http://www.oracle.com/technetwork/tutorials/tutorials-1876574.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值