即使有足够的RAM,Java也会OutOfMemory

时间:2014-04-11 20:36:03

标签: java windows

我有一个使用以下jvm选项的应用程序:

-Xmx512m -Xms256m -XX:+UseParNewGC -XX:+UseConcMarkSweepGC 
-XX:MaxGCPauseMillis=2 -XX:MaxDirectMemorySize=1G

我在带有8GB RAM的Windows 7 x64上运行它。当任务经理说有60%的RAM正在使用时,就无法运行我的程序,Java说"内存不足"。即使理论上我还剩下近3GB的可用内存。下面是在NetBeans中分析我的项目的截图(直到它突然在随机点上崩溃)。什么可能导致这些问题?我的程序真的太贵了吗?

скриншот http://SSmaker.ru/68b30a7f.png

скриншот http://SSmaker.ru/dc9f4410.png

1 个答案:

答案 0 :(得分:0)

你应该贪婪 - 分配你所需的最低开销。那是, 使用类似-Xms1g -XMx1g的东西,所以当你的应用程序实际开始运行时, 它已经保留了它的最大堆使用率。