我正在调试一个我一直在做的相当大的项目(但最初并没有创建),我注意到有时它会以OutOfMemoryError
. 该代码正在从文件中加载大量数据,因此一般来说这并不完全令人惊讶。
然而,让我感到困惑的是,我使用 VisualVM 1.3.4 来分析程序,并且它的行为不一致。大多数时候我运行它,堆逐渐扩大到大约 2GB(计算机有 16GB 的 RAM;它用于学术研究),使用的堆在它下面越来越高。大约2GB,它会崩溃。随着时间的推移,该程序不会处理更多信息,因此它不应该在短短几分钟内将堆增加到 2GB。
不过,有时我会在大约 30 秒后突然崩溃,堆大小为 250MB,并且只有大约 100MB 在使用中。java.lang.OutOfMemoryError: Java heap space
如果我的堆未满,我将如何获得?
编辑:我正在使用 Eclipse 运行程序,并且我有 VisualVM 插件,因此它会自动启动。另外,我正在使用 Java 7。