gpt4 book ai didi

java - NMT 类提交与 Jstat 压缩类空间

转载 作者:行者123 更新时间:2023-12-02 09:24:10 56 4
gpt4 key购买 nike

我正在调查 OutOfMemoryError:压缩类空间问题。我认为,我找到了根本原因和解决方案(Hibernate Validator 方法调用 JAXBContext.newInstance():用户每次提交操作后的 buildValidatorFactory),但在我的研究过程中,我注意到一件令人困惑的事情。

我尝试运行 jcmd VM.native_memory 和 jstat -gc 来跟踪类提交大小和 CCSU(压缩类空间使用情况):

d:\experiments>jcmd 59692 VM.native_memory summary
Native Memory Tracking:

Total: reserved=10039335KB, committed=889895KB
- Java Heap (reserved=8353792KB, committed=522240KB)
(mmap: reserved=8353792KB, committed=522240KB)

- Class (reserved=1072460KB, **committed=24268KB**)
(classes #2518)
(malloc=9548KB #2393)
(mmap: reserved=1062912KB, committed=14720KB)

d:\experiments>jstat -gc 59692 2s
S0C S1C S0U S1U EC EU OC OU MC MU CCSC CCSU YGC YGCT FGC FGCT CGC CGCT GCT
21504,0 21504,0 0,0 0,0 131072,0 56218,7 139264,0 7755,5 14976,0 14318,5 1920,0 1721,7 2 0,012 1 0,036 - - 0,048

我预计 NMT 中的“类提交”指标和 jstat 中的 CCSU 指标之间没有重大差异,但 jstat 显示大约仅 1,72 MB 的已用内存,而类提交的已使用内存超过 24 MB。因此,我生成了 GC.class_stats 统计数据,它显示 KlassBytes 约为 1738616 B -> 1,739 MB - 因此它与 CCSU 中 jstat 显示的值大致相同。我还发现其余的元数据(如方法、常​​量等)占用了大约 14,44 MB(这与 mmap 中的值大致相同:commited=14720KB - 但我不知道这个数字是多少)。

那么剩下的部分在哪里呢? NMT 给出的数字到底是多少?

最佳答案

native 内存跟踪报告中的

Class部分显示了元空间压缩类空间的聚合数量。 元空间压缩类空间之间的区别解释here .

Metaspace vs. Compressed Class Space

来自 Memory Footprint of a Java Process 的幻灯片演示

<小时/>

jstat 指标 MCMUCCSCCCSU 代表

  • 元空间容量
  • 已使用元空间
  • 压缩类空间容量
  • 使用的压缩类空间

已提交容量已使用之间的关系在this answer中进行了解释。 .

因此, native 内存跟踪显示的提交的类与 jstat 指标相关,具有以下不等式:

Class Committed >= MC + CCSC >= MU + CCSU

但是,它们之间的差异可以任意大。

<小时/>

自 JDK 10 起, native 内存跟踪报告显示了 Class 部分的详细分割:

-     Class (reserved=1073841KB, committed=28593KB)
(classes #3967)
( instance classes #3694, array classes #273)
(malloc=689KB #9228)
(mmap: reserved=1073152KB, committed=27904KB)
( Metadata: )
( reserved=24576KB, committed=24576KB)
( used=24131KB)
( free=445KB)
( waste=0KB =0.00%)
( Class space:)
( reserved=1048576KB, committed=3328KB)
( used=3003KB)
( free=325KB)
( waste=0KB =0.00%)

关于java - NMT 类提交与 Jstat 压缩类空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58457161/

56 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com