美文网首页JAVA源码
JVM GC 官方调优文档翻译

JVM GC 官方调优文档翻译

作者: 写代码的Gump | 来源:发表于2020-11-30 20:15 被阅读0次

官方资料

1、JVM官方介绍
2、JVM linux macOS 参数文档
3、官方gc调优指南

GC 官方调优

许多参数会影响生成大小。“堆参数”说明了堆中提交空间和虚拟空间的区别。在虚拟机初始化时,堆的整个空间都被保留。保留空间的大小可以使用-Xmx选项指定。如果-Xms参数的值小于-Xmx参数的值,那么并不是所有保留的空间都立即提交给虚拟机。未提交的空间在该图中标记为“virtual”。堆的不同部分(终身生成)

有些参数是堆的一部分与另一部分的比率。例如,参数NewRatio表示成年代与年轻代的相对大小。

1、影响垃圾收集性能的最重要因素是可用内存总量。因为GC发生在代满时,所以吞吐量与可用内存量成反比。

参数 默认值 含义
MinHeapFreeRatio 40 最小空闲堆比例
MaxHeapFreeRatio 70 最大空闲堆比例
-Xms 6656k 初始化堆大小
-Xmx 估算 最大堆大小

2、在可用内存总量之后,影响垃圾收集性能的第二大影响因素是专用于年轻代的堆的比例。年轻代越大, minor collections发生的频率就越低。然而,对于有限的堆大小,更大的年轻代意味着更小的长期代,这将增加 major collections 的频率。最佳选择取决于应用程序分配的对象的生存期分布。

参数 默认值 含义
NewRatio 2 young : tenured = 1:2 新生代占总堆的 三分之一
NewSize 1310M young 的默认大小
MaxNewSize 无限制 最大年轻代内存
SurvivorRatio 8 eden 与 survivor 的比例

可以使用参数SurvivorRatio来调优幸存者空间的大小,但这对于性能通常并不重要。例如,-XX:SurvivorRatio=8将eden和Survivor之间的比率设置为1:8。换句话说,每个Survivor的大小将是eden的八分之一,因此是年轻一代的十分之一(不是九分之一,因为有两个幸存者空间)。

If survivor spaces are too small, copying collection overflows directly into the tenured generation. If survivor spaces are too large, they will be uselessly empty. At each garbage collection, the virtual machine chooses a threshold number, which is the number times an object can be copied before it is tenured. This threshold is chosen to keep the survivors half full. The command line option -XX:+PrintTenuringDistribution (not available on all garbage collectors) can be used to show this threshold and the ages of objects in the new generation. It is also useful for observing the lifetime distribution of an application.

如果survivor 太小,则复制GC会直接溢出到 tenured 代。如果survivor 太大,就会变成无用的空空间。在每次垃圾回收时,虚拟机选择一个阈值数,这个阈值是一个对象在放入tenured代之前可以复制的次数。选择此阈值是为了使survivor 保持一半满。命令行选项 -XX:+PrintTenuringDistribution(不是在所有垃圾收集器上都可用)可以用来显示这个阈值和新一代对象的年龄。它对于观察应用程序的生存期分布也很有用。

 -XX:+PrintTenuringDistribution

The following are general guidelines for server applications:

  • First decide the maximum heap size you can afford to give the virtual machine. Then plot your performance metric against young generation sizes to find the best setting.

    • Note that the maximum heap size should always be smaller than the amount of memory installed on the machine to avoid excessive page faults and thrashing.
  • If the total heap size is fixed, then increasing the young generation size requires reducing the tenured generation size. Keep the tenured generation large enough to hold all the live data used by the application at any given time, plus some amount of slack space (10 to 20% or more).

  • Subject to the previously stated constraint on the tenured generation:

    • Grant plenty of memory to the young generation.

    • Increase the young generation size as you increase the number of processors, because allocation can be parallelized.

相关文章

  • JVM GC 官方调优文档翻译

    官方资料 1、JVM官方介绍[https://docs.oracle.com/javase/8/docs/tech...

  • JVM性能调优的6大步骤,及关键调优参数详解

    JVM内存调优 对JVM内存的系统级的调优主要的目的是减少GC的频率和Full GC的次数。 1.Full GC ...

  • Java架构师面试题——JVM性能调优

    JVM内存调优 对JVM内存的系统级的调优主要的目的是减少GC的频率和Full GC的次数。 1.Full GC ...

  • JVM-GC调优

    零、本文纲要 一、 GC调优基本思路二、 新生代内存调优三、 老年代内存调优四、 GC调优案例 官方GC调优指南[...

  • JVM GC调优入门

    JVM GC调优入门 这篇文章会介绍几个常用的调优参数,再通过两个案例介绍如何进行JVM GC调优。阅读这篇文章的...

  • 调优

    1.8默认为parallel GC 使用G1 GC日志 调优 根据需求进行JVM规划和预调优 优化运行JVM运行环...

  • JVM调优

    一、JVM内存调优 对JVM内存的系统级的调优策略主要是减少GC的频率和Full GC的次数。 1️⃣Full G...

  • (六)、jvm调优

    2018-10-03 推荐原文 原文作者:纯洁的微笑 什么是jvm调优呢?jvm调优就是根据gc日志分析jvm内存...

  • JVM系列篇:JVM性能调优的6大步骤,及关键调优参数详解

    本系列会持续更新。 一、JVM内存调优 对JVM内存的系统级的调优主要的目的是减少GC的频率和Full GC的次数...

  • gc调优我们到底在调整什么

    java开发一般都会涉及到jvm调优,其中gc调优是个重点项。那gc调优调整的究竟是什么呢?准确来说是业务。下面围...

网友评论

    本文标题:JVM GC 官方调优文档翻译

    本文链接:https://www.haomeiwen.com/subject/jpvrwktx.html