Установка размера кучи в Java

Я пытаюсь запустить инструмент Java в системе Linux Ubuntu, и после того, как программа импортировала 12% данных, продолжаю получать следующую ошибку:

Fata Error:
Exception in thread 'Thread-l" java.lang.OutOfMemoryError: java heap space

Я попытался установить размер кучи, используя

java -Xms8G -Xmx16G -jar Haploview.jar

но ошибка появляется снова точно в том же месте после использования менее 500 МБ выделенной оперативной памяти. Используя команду 'free -m', я вижу, что осталось много свободной оперативной памяти, но я не знаю, почему Java не использует ее.


person user3015703    schedule 12.09.2018    source источник
comment
OutOfMemoryError может появиться, когда в вашей физической системе мало памяти. Вы позволяете JVM занимать до 16 ГБ, но действительно ли у вашей физической машины столько памяти доступно?   -  person Matt Clark    schedule 12.09.2018
comment
Да, это локальный сервер с 64 ГБ оперативной памяти.   -  person user3015703    schedule 12.09.2018
comment
Но что еще работает? Если ты cat /proc/meminfo, тебе хватит MemAvailable?   -  person Matt Clark    schedule 12.09.2018
comment
Вы можете использовать что-то вроде jconsole, чтобы отслеживать, что происходит с кучей. Из любопытства, что делает ваш код при возникновении исключения? У тебя есть стек? Документы Jconsole: docs.oracle.com/javase/10/management/   -  person Taylor    schedule 12.09.2018
comment
MemTotal: 131947892 кБ _ MemFree: 81041836 кБ_ MemAvailable: 109647548 кБ   -  person user3015703    schedule 12.09.2018


Ответы (1)


person user 9014097    schedule 12.09.2018
comment
Спасибо. Я не знал, что вам нужно установить размер памяти один раз для java и один раз для программы независимо. Я вижу, что haploview использует более 9 ГБ памяти больше, чем вы ожидали. Но, похоже, теперь он работает полностью нормально. - person user3015703; 14.09.2018