首页 > 解决方案 > 仅在特定计算机上的 Java 堆空间内存不足

问题描述

在我们开始之前,因为答案似乎很明显,所讨论的机器将最大堆空间设置为 8GB,而其他能够运行它的机器将其设置为 1GB,因此这不是最大堆大小问题。好吧,让我们潜入。

我正在为一个学校项目进行交通模拟,由于时间限制,我们做了很多“快速而肮脏”的解决方案,导致无法正确优化我们的内存使用。在过去的两周里,我们花时间分析我们的程序,识别内存泄漏,并降低精度以使我们的整体内存开销达到 500MB 左右(根据 JProfiler)。

问题是,只有某些笔记本电脑能够运行模拟。我的笔记本电脑(16GB RAM,i7 CPU)无法运行 sim。当然,我做的第一件事是逐步增加 JVM 的最大堆空间,一直增加到 8GB。问题是,根据 JProfiler 的说法,我们在编译后最大内存约为 1GB,然后在整个 sim 中下降到稳定的 500MB。

所有组成员都运行相同版本的 Java (9) 和相同的 SDK 版本。我们甚至尝试过使用不同版本的 Java,但均无济于事。我正在使用最新版本,并多次验证我们在完全相同的环境中运行完全相同的程序并具有完全相同的设置,但由于某种原因,只有我的计算机存在堆空间问题。

有没有人知道这里可能出了什么问题?我重新安装了 JVM 无济于事,并在编译期间监视我的计算机,我看不到任何时候使用的内存超过 2-3GB,所以我显然没有使用我提供的所有 8GB 堆空间虚拟机。似乎有严重错误,任何帮助将不胜感激!

标签: javamemorycompilationout-of-memoryheap-memory

解决方案


推荐阅读