我创建了一个java应用程序,很多用户都使用它。我已将应用程序捆绑在一个exe文件中,使用此命令运行它:
java -jar -Xms256m -Xmx1024m MyApplication.jar
我正在使用这个高“-Xmx”值,因为有时应用程序可能需要高内存才能工作,否则可能会导致“Out of memory”错误。
该应用程序运行正常,因为我有3GB Rams,但许多其他用户在启动时收到错误“无法创建Java虚拟机”,因为它们具有低内存:1.5GB或2GB。
我被困在两个错误“内存不足”和“无法创建Java虚拟机”之间!!
如果此内存可用,是否有一个java参数可以保留1024个内存,如果没有,那么在需要时可以保留最大内存吗?
答案 0 :(得分:4)
您需要1 GB或不需要。
如果你想使用更多内存,我会尝试使用-server
JVM,默认最多为主内存的1/4。它还可以更快地运行长时间运行的程序。 ;)
在您的情况下,它将使最大堆(而不是总内存)
1.5 GB -> 0.38 GB
2 GB -> 0.5 GB
3.5 GB -> 0.88 GB
这可能足够接近。您也可以考虑使用非堆内存,因为这可以为您提供更多的内存选择。
BTW:4 GB内存的价格不到20美元。 :P答案 1 :(得分:1)
Java虚拟机在Windows中需要contiguous allocation
内存。如果RAM为2GB且可能没有足够的contiguous block of memory
1GB,则错误。