【发布时间】:2014-11-27 08:37:21
【问题描述】:
JVM 使用参数 -XX:+HeapDumpOnOutOfMemoryError 启动。但它不会在内存不足时创建堆转储。
本地分配失败时Java不创建堆转储吗?
以下是日志:
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (malloc) failed to allocate 1184288 bytes for Chunk::new
# An error report file with more information is saved as:
# D:\product\bin\hs_err_pid5876.log
java.lang.OutOfMemoryError
--编辑--
最大堆大小设置为 4GB,系统 RAM 大小为 16GB,当内存耗尽时,它使用 >11GB(由 Windows 任务管理器显示)。
从与@alain.janinm 的讨论中......我想我可以得出结论,JVm 甚至没有足够的内存来生成堆转储。
那么,是否有可能创建 heapdump 导致 JVM 使用了那么多系统内存
【问题讨论】:
-
您使用的 Java 版本是什么?
-
我正在使用 jdk1.6 @alain.janinm
-
请问您能提供确切的版本吗?这是25号更新吗?这个版本有这个错误:bugs.java.com/view_bug.do?bug_id=7042582。页面末尾有一个解决方法。
-
它的 JRE 版本:6.0_45-b06........我没有确切的 JDK 版本.......@alain.janinm
-
好吧,也许你在崩溃时真的没有可用内存了。我不是指堆大小,而是实际的计算机内存。您知道崩溃时堆的大小以及计算机上的可用内存吗?
标签: java java-native-interface out-of-memory native-code heap-dump