为什么 hprof 文件的大小比分配给 jvm 的内存量小得多

发布于 2024-11-01 07:37:45 字数 434 浏览 6 评论 0原文

我们的代码使用 -XX:+HeapDumpOnOutOfMemoryError 标志运行,因此我们在 OOM 时获得一个 hprof 文件。 最近我从安装中得到了这样一个文件,我用Eclipse内存分析器(MAT)打开它,我可以看到总大小为46MB,如果进程是用-Xmx1024m启动的,那怎么可能???

大小不应该更接近最大分配大小吗?

这是用jdk1.6的。

编辑:好的,现在我发现了一个 类似的问题,而且确实是一个 PermGen 空间问题可能是原因,因为我的流程已经持续了 23 天。我经常创建新线程(据我所知,该线程正确结束),也许每秒一次。有人知道我是否可以以某种方式确认这一点吗?

Our code runs with -XX:+HeapDumpOnOutOfMemoryError flag so we get an hprof file on OOM.
Recently I got such a file from an installation, I opened it with Eclipse memory analyzer (MAT) and I can see the total size is 46MB, how can it be if the process was started with -Xmx1024m???

Should not the size be much much closer to the max allocated size??

This is with jdk1.6.

EDIT: ok now I found a similar question and indeed a PermGen space issue could be the reason, as my process has been up for 23 days. I create new threads (that end properly as far as I know) very often, once per second maybe. Anybody knows if I could confirm this somehow?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

心意如水 2024-11-08 07:37:45

如果您未能创建一个非常大的对象,就会发生这种情况。即您未能创建的对象不在转储中。

This would happen if you failed to create a very large object. i.e. the object which you failed to create is not in the dump.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文