我总是能够为在32位Windows XP(Java 1.4,1.5和1.6)上运行的Java SE分配1400兆字节.
java -Xmx1400m ...
Run Code Online (Sandbox Code Playgroud)
今天我在使用Java 1.5_16和1.6.0_07的新Windows XP机器上尝试了相同的选项并得到错误:
Error occurred during initialization of VM
Could not reserve enough space for object heap
Could not create the Java virtual machine.
Run Code Online (Sandbox Code Playgroud)
通过反复试验,我可以在这台机器上分配1200兆字节.
任何想法为什么一台机器将允许1400和另一台只有1200?
编辑:该机器有4GB的RAM,大约3.5GB,Windows可以识别.
我的Java应用程序通过运行"java -jar j.jar"进程运行另一个Java应用程序.众所周知,J.jar根据给定的数据集使用大量内存,并且通常会获得OutOfMemoryError堆.所以我想在它上面使用-Xmx,这样我就可以分配尽可能多的内存(或接近).我想在系统上获取总内存,然后在-Xmx中指定80-90%.
我的问题有什么解决方案吗?而且,我的解决方案听起来如何?
编辑:我不能减少内存消耗,因为正在使用的内存是Java的内置pack200压缩,我用它来打包一些JAR文件.
我想知道为什么Matlab不使用swap,而是抛出错误"Out of memory"?
Matlab不应该放慢速度而不是抛出"内存不足"吗?
这与Java有关吗?
补充说:
我知道"内存不足"意味着它没有连续的记忆.不交换有连续的内存,还是?我糊涂了...