【问题标题】:Interpreting jstat results解释 jstat 结果
【发布时间】:2013-01-22 17:55:49
【问题描述】:

我是 jstat 工具的新手。因此,我做了如下示例。

./jstat -gcutil -t 4001 5000
Timestamp         S0     S1     E      O      P     YGC     YGCT    FGC    FGCT     GCT
       565088.4   0.00   0.89  75.86  40.59  84.80    405    3.822     4    0.549    4.371
       565093.4   0.00   0.89  77.81  40.59  84.80    405    3.822     4    0.549    4.371
       565098.4   0.00   0.89  77.81  40.59  84.80    405    3.822     4    0.549    4.371
       565103.5   0.00   0.89  77.85  40.59  84.80    405    3.822     4    0.549    4.371
       565108.5   0.00   0.89  77.85  40.59  84.80    405    3.822     4    0.549    4.371
       565113.4   0.00   0.89  77.85  40.59  84.80    405    3.822     4    0.549    4.371


jstat -gc output

 S0C    S1C    S0U    S1U      EC       EU        OC         OU       PC     PU    YGC     YGCT    FGC    FGCT     GCT
704.0  704.0   0.4    0.0    6080.0   4013.8   14928.0     6335.2   21248.0 18019.6    436    3.957   4      0.549    4.506
704.0  704.0   0.4    0.0    6080.0   4016.6   14928.0     6335.2   21248.0 18019.6    436    3.957   4      0.549    4.506
704.0  704.0   0.4    0.0    6080.0   4135.4   14928.0     6335.2   21248.0 18019.6    436    3.957   4      0.549    4.506
704.0  704.0   0.4    0.0    6080.0   4135.4   14928.0     6335.2   21248.0 18019.6    436    3.957   4      0.549    4.506
704.0  704.0   0.4    0.0    6080.0   4135.4   14928.0     6335.2   21248.0 18019.6    436    3.957   4      0.549    4.506
704.0  704.0   0.4    0.0    6080.0   4135.4   14928.0     6335.2   21248.0 18019.6    436    3.957   4      0.549    4.506

这个结果说明了什么?哪些是要注意可能的内存问题的列,例如内存泄漏等。

【问题讨论】:

    标签: java memory-management


    【解决方案1】:

    gcutil 以百分比利用率提供统计信息

    -gcutil Option
    Summary of Garbage Collection Statistics 
    Column  Description
    S0      Survivor space 0 utilization as a percentage of the space's current capacity.
    S1      Survivor space 1 utilization as a percentage of the space's current capacity.
    E       Eden space utilization as a percentage of the space's current capacity.
    O       Old space utilization as a percentage of the space's current capacity.
    P       Permanent space utilization as a percentage of the space's current capacity.
    YGC     Number of young generation GC events.
    YGCT    Young generation garbage collection time.
    FGC     Number of full GC events.
    FGCT    Full garbage collection time.
    GCT     Total garbage collection time.
    

    gc 给出分配空间和使用空间方面的统计数据。

    -gc Option
    Garbage-collected heap statistics 
    Column  Description
    S0C     Current survivor space 0 capacity (KB).
    S1C     Current survivor space 1 capacity (KB).
    S0U     Survivor space 0 utilization (KB).
    S1U     Survivor space 1 utilization (KB).
    EC      Current eden space capacity (KB).
    EU      Eden space utilization (KB).
    OC      Current old space capacity (KB).
    OU      Old space utilization (KB).
    PC      Current permanent space capacity (KB).
    PU      Permanent space utilization (KB).
    YGC     Number of young generation GC Events.
    YGCT    Young generation garbage collection time.
    FGC     Number of full GC events.
    FGCT    Full garbage collection time.
    GCT     Total garbage collection time.
    

    来源:Docs

    【讨论】:

      【解决方案2】:

      查看文档:

      https://docs.oracle.com/javase/8/docs/technotes/tools/unix/jstat.html

      基本上,一行是一个时间点。这些列显示了有关 JVM 内存区域(Survivor、Eden、...)的数据,如果不知道 JVM 是如何工作的,就不可能理解它们。

      比如文章JVM garbage collection in young generation有一些解释。

      以下是 JVM 对象生成工作原理的摘录

      Eden 是创建新对象的地方。当 Eden 满了时,运行一个small GC:如果一个对象没有引用它,它将被删除,否则它会存活,并移动到Survivor 空间(只有一个幸存者空间在使用一次,来自另一个空间的所有对象都复制到那里)。

      如果一个对象在一定次数的来回复制中幸存下来,它将被移动到Old 空间。如果Old空间满了,就会运行一个Full GC,这会影响JVM中的所有对象,所以操作要重很多。

      还有Permanent 空间,其中存储“元数据”(类描述符、字段、方法、...描述符)。

      【讨论】:

      • 我也有谷歌,但我不太了解这部分 S0C 当前幸存者空间 0 容量 (KB)。 S1C 当前幸存者空间 1 容量 (KB)。正如大多数网站所讨论的那样。
      • 这不是大小,而是容量(以 % 为单位)。看看这个:stackoverflow.com/questions/13660871/…关于对象生成有一些解释。
      • 所以在我的情况下,伊甸园空间是 77.85,很快就会有一个次要 GC 是吗?所以目前伊甸园现在接近 94% 这表明伊甸园何时增长意味着添加了新东西是什么?
      • 是不是说我的旧填充没有自动清除,会导致内存泄漏?
      • Eden 达到 100 然后 S0 变为 0.89,S1 为 0.00,然后 E 重新开始,S0 为 0.00,S1 回到 0.89?
      【解决方案3】:

      使用这个简单的online jstat visualizer tool 绘制 jstat GC 统计信息。

      【讨论】:

      • 而不是发布链接(可能会死),您应该在答案中提供必要的信息。
      猜你喜欢
      • 2017-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-09
      • 2017-06-13
      相关资源
      最近更新 更多