我有一个配置为在OOM上创建内存转储的Tomcat应用服务器,它以-Xmx1024M启动,因此他应该可以使用技嘉。
现在我发现了一个这样的转储,它只包含260MB的未保留内存。转储怎么可能比他应该提供的那么小?
答案 0 :(得分:2)
只有有关已分配内存使用情况的信息才会被转储到文件中。 堆转储不是堆的二进制映像,它包含有关数据类型等的信息,可能会超出可用内存。
答案 1 :(得分:2)
Permgen空间独立于堆进行管理,即使总体上有足够的可用内存也可以耗尽。一些Web框架(特别是JSF)是真正的生猪,但很容易导致默认配置用完。可以使用-XX:MaxPermSize = ### m
来增加它请记住,系统空间受堆和permgen之和的约束,因此如果不按PermGen增加的数量减少堆,则可以在开始获取无法创建本机线程OOM异常之前消耗更少的总资源。 / p>