java - 内存转储比可用内存小得多

标签 java memory-leaks dump memory-dump hprof

我有一个 Tomcat 应用程序服务器,配置为在 OOM 上创建内存转储,它以 -Xmx1024M 启动,因此应该有一个 Gigabyte 可供他使用。

现在我找到了一个这样的转储,它只包含 260MB 的未保留内存。怎么可能转储比他应该可用的大小小得多?

最佳答案

Permgen 空间独立于堆进行管理,即使总体上有足够的可用内存,也可能会用完。一些 Web 框架(尤其是 JSF)是真正的 pig ,而且很容易导致默认配置用完。它可以通过 -XX:MaxPermSize=###m 增加

请记住,系统空间受堆和 permgen 之和的限制,因此如果您不按 PermGen 增加的量减少堆,则在开始收到无法创建 native 线程 OOM 异常之前可以消耗更少的总资源。

关于java - 内存转储比可用内存小得多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2808270/

相关文章:

java - Android Studio 添加外部库(android-maven 错误)

python - 执行器上的 Spark 2.3 内存泄漏

java - 如何设置JVM存储MDMP文件的目录

postgresql - 转储 PostgreSQL 数据库时排除函数定义

仿函数上的 Java8 热点

java - 如何使用 javafx 隐藏或停用 TextField 和 Label

c++ - 调试断言失败…_BLOCK_TYPE_IS_VALID(pHead->nBlockUse)

java - 如果发生异常,使用 newBufferedReader 打开的文件是否会关闭?

mysql - 将数据库存储到文件中的替代方法

java - 使用 Pixelmed 读取和写入 DICOM 属性