gpt4 book ai didi

java - "compacting perm gen"值代表什么?

转载 作者:搜寻专家 更新时间:2023-11-01 02:28:25 27 4
gpt4 key购买 nike

我正在调查我们的一个生产系统上的 JVM 崩溃,以下内存值在下面的 hs_err_pid 日志文件片段中代表什么?

Heap
par new generation total 1258624K, used 955445K [0x00000005c0000000, 0x00000006155b0000, 0x000000066aaa0000)
eden space 1118784K, 73% used [0x00000005c0000000, 0x00000005f1e52598, 0x0000000604490000)
from space 139840K, 98% used [0x000000060cd20000, 0x00000006153db100, 0x00000006155b0000)
to space 139840K, 0% used [0x0000000604490000, 0x0000000604490000, 0x000000060cd20000)
tenured generation total 2796224K, used 1745107K [0x000000066aaa0000, 0x0000000715550000, 0x00000007c0000000)
the space 2796224K, 62% used [0x000000066aaa0000, 0x00000006d52d4d90, 0x00000006c2e0c400, 0x0000000715550000)
compacting perm gen total 482944K, used 482943K [0x00000007c0000000, 0x00000007dd7a0000, 0x0000000800000000)
the space 482944K, 99% used [0x00000007c0000000, 0x00000007dd79fff0, 0x00000007dd7a0000, 0x00000007dd7a0000)
No shared spaces configured.

我关心的是“compacted perm gen”用法:它是指最大分配的 perm gen 堆的使用百分比,还是最大堆的使用百分比,或其他什么?提供的百分比似乎是已用/总计的除法,这是总分配的 perm gen 吗?由于我们的 -XX:MaxPermSize 设置为 1GB...

是否有任何有用的资源(Oracle whitepaper 除外,它没有提到 hs_err 文件)来解释在 JVM 崩溃时转储的数据?

最佳答案

我从未找到准确描述“compacting perm gen”值的引用资料,但我们自己的调查证明报告的值是:

currently used PermGen / currently allocated PermGen

在我的问题示例中,这意味着已经为 PermGen 分配了 482944K 内存,其中 482943K 内存已在 GC 点使用 (99%)。我们的最大 PermGen 大小设置为 1048576K (1GB),因此收集过程有大量保留资源可用于重新分配。

对于那些遇到类似问题的人 - 我们最终解决了问题。在我们的案例中,它原来是一个利用了 sun.misc.Unsafe 的第三方库。类,即 notoriously "unsafe"当使用不当。

在这种情况下,一个 piece of logic for cloning objects将特定的 ClassLoader 传递给某些 sun.misc.Unsafe 操作以复制对象。在某些机器上,复制的对象经常以损坏的状态创建。当 JVM 尝试进行垃圾收集时,它最终会收集这些坏对象之一并崩溃。这总是导致我的问题中描述的错误。

关于java - "compacting perm gen"值代表什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15611423/

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