gpt4 book ai didi

jvm - hprof 中具有 "no references"的对象

转载 作者:行者123 更新时间:2023-12-04 21:23:48 24 4
gpt4 key购买 nike

我正在调查 hprof VisualVM 中的文件

该服务器运行 JDK 1.4.2_30 并具有 1 GB 堆,NewSize 为 200 Mb。

hprof 显示 71% 的堆被 int[] 的 56000 个实例占用在 VisualVM 中查看时,这些 56K 数组都没有引用

按照我们的说法,如果“没有引用”,这应该被垃圾收集。
所以问题是:

a) 有没有办法找出这些引用文献?

b) 这是一个不正确的快照 - 即进行堆转储的操作是否进行了某种 GC ?

c) 我们应该查看 VisualVM 中的“保留大小”对象吗?

作为更新 - 我们仍然不知道这些是什么int[]是,但下一个最大的对象是池中的 Weblogic 内部 EJB 引用,我们发现其中一个设置不正确,导致内存利用率从早期频繁的 Full GC 降低到 30%

最佳答案

免责声明:前面的猜测,我没有明确的答案,但我可能会给出一些有用的提示。

我最近看到了类似的情况('虽然有更新的 Java 版本)。

大量未引用的原因int[]似乎已经映射了某种类型的缓冲区(我不是 NIO 专家,但似乎与此有关)。

得出这个结论的原因是byte[]的数量非常相似。内存中的大小几乎相同 byte[]被一些 *Channel 引用实例。

所以我的猜测是(是)那些 int[]实际上是合成实例,它们实际上与 byte[] 共享它们的内存(正确引用)。简而言之:他们是红鲱鱼。

所有这些都是很多猜测,我从来没有跟进过,因为当时的实际问题原来是完全不相关的。

关于jvm - hprof 中具有 "no references"的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7304665/

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