我已经开发了一个java程序,我已经部署在远程机器上,它安装了最新的jre1.8.0_60。我用jdk1.8.0_60开发了程序。我已经在我的机器上测试了程序(内存6GB-64bit)和我的同事计算机(内存8GB-64bit)并且程序执行没有任何问题但是当我在远程机器上执行相同的程序(内存4GB-64BIT)时它会抛出这个错误:
java.lang.OutOfMemoryError: Java heap space
Dumping heap to java_pid3696.hprof ...
Heap dump file created [217326007 bytes in 2.721 secs]
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOfRange(Unknown Source)
at java.lang.String.<init>(Unknown Source)
at java.lang.StringBuilder.toString(Unknown Source)
at Invoice.GetInvoicesByStatusAndDate(Invoice.java:66)
at ClientSAAJ.GetInvoicesByStatusAndDate(ClientSAAJ.java:75)
at ClientSAAJ.main(ClientSAAJ.java:10)
可能是没有足够的内存或我是否进行了某种java配置?
答案 0 :(得分:0)
您的程序没有足够的内存来运行。您可以使用-Xmx jvm选项设置最大堆大小。
e.g。如果您的程序是可执行jar,要分配最大80MB,您可以使用
$java -Xmx80m -jar executatable.jar
有关详细信息,请参阅https://docs.oracle.com/javase/8/docs/technotes/tools/windows/java.html
答案 1 :(得分:0)
@curiousprgrammer,我将-Xmx80m设置为-Xmx1028m,似乎问题更多的是jvm然后是实际的pysical内存。