OutOfMemoryError: пространство кучи Java на удаленной машине Windows
Я разработал Java-программу, которую я развернул на удаленной машине, и на ней установлена последняя версия jre1.8.0_60. Я разработал программу, используя jdk1.8.0_60. Я проверил программу на моей машине (память 6 ГБ-64 бита) и на компьютере моего коллеги (память 8 ГБ-64 бита), и программа запустилась без проблем, но когда я выполняю ту же программу на удаленной машине (память 4 ГБ-64 бита), она выдает эта ошибка:
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?
2 ответа
У вашей программы недостаточно памяти для работы. Вы можете установить максимальный размер кучи, используя опцию -Xmx jvm.
Например, если ваша программа представляет собой исполняемый файл jar, для выделения максимум 80 МБ вы можете использовать
$java -Xmx80m -jar executatable.jar
См. https://docs.oracle.com/javase/8/docs/technotes/tools/windows/java.html для получения дополнительной информации.
@curiousprgrammer, я установил -Xmx80m на -Xmx1028m, похоже, что проблема больше связана с jvm, чем с физической памятью.