所以,这确实是个非常简单的问题。在我的 RAM 有限的开发机器上(8GB RAM,Win 7 x64,8GB 页面文件),当我用完可用 RAM 时,程序首先开始变慢,最终崩溃。大多数情况下,JVM 首先崩溃,而且非常令人沮丧。这怎么可能呢?就好像根本没有页面文件,但当我达到 8GB 的已用 RAM 时,JVM(有时还有其他程序)几乎立即崩溃。
是的,我非常清楚所有分页机制主要由硬件实现,硬件应该能够处理页面文件,就好像有大量可用 RAM 一样,而对页面文件是否正在使用甚至是否存在一无所知。那么为什么我实际上观察到的行为却大不相同呢?
答案1
您可以运行 jprofiler 并调查堆内存吗?此外,还不清楚执行中的 Java 程序的内存要求。通常 8 GB 的 RAM 被认为是合适的。如果 Java 程序正在创建大量线程并且线程未终止,则可能会导致所有这些问题。请检查 Java 程序中创建的对象数量和线程性质。