2

我在使用 Java 的生产中经常遇到一些完整的 GC 问题,我怀疑内存是由网络库分配的,用于缓冲 TCP 请求结果。

当内存使用率很高(大约 8GB)时,我已经转储了 Java 堆。我试图用eclipse MAT分析.HPROF文件,文件大约8GB。

但是在 Eclipse MAT 中,总堆大小约为 200 MB,所以我找不到哪些对象占用了 8GB 堆内存。

由于 eclipse MAT 没有显示完整的堆转储内容,我不知道如何找到应用程序占用这么多内存的原因。

4

1 回答 1

2

如果你使用MAT内存分析器打开hprof转储,可能是堆的其余部分是无法访问的对象,MAT默认隐藏,见 https://stackoverflow.com/a/20405267/3484881

于 2021-06-30T12:51:53.537 回答