как увеличить память Java (алгоритмы работают на Ubuntu, но не на Mac; та же конфигурация машины) - PullRequest
3 голосов
/ 26 октября 2011

Недавно я получил пресловутое сообщение об ошибке: OutOfMemoryError.У меня 64-битный Mac с 16 ГБ оперативной памяти и 2X2,6 ГГц четырехъядерным процессором.Получение этого сообщения об ошибке просто не имеет смысла для меня, потому что тот же алгоритм, который я использую (который вызывает это сообщение об ошибке), работает гладко на другой машине (Ubuntu 16GB Ram).

System.out.println(java.lang.Runtime.getRuntime().maxMemory()); 

Когда я запускаю приведенный выше код на моем Mac, я получаю: 129 957 888 (без запятой, конечно: -))

И при запуске этого кода на машине с Ubuntu я получаю1,856,700,416

Может кто-нибудь сказать мне, как я могу увеличить максимальную память, чтобы запустить мой алгоритм?Спасибо!

Я попытался установить на своем затмении: аргументы виртуальной машины по умолчанию -Xms512m -Xmx4g, но ничего не изменилось.

Ответы [ 3 ]

6 голосов
/ 26 октября 2011

-Xmx и -Xms являются правильными аргументами команды java для изменения размера кучи, но Eclipse должен быть настроен по-другому .

1 голос
/ 26 октября 2011

Тебе придется уточнить. Вы проводите тестирование в Eclipse или вне Eclipse? Простая передача параметра «-Xmx» в Eclipse не будет делать то, что вы хотите, даже если вы сделаете это правильно, чтобы фактически изменить значение max mem для Eclipse (для этого необходимо добавить префикс «-vmargs»). Если вы хотите изменить максимальное значение mem для разветвленной JVM, в которой работает ваш алгоритм, вам нужно изменить параметры в конфигурации выполнения.

0 голосов
/ 27 октября 2011

Похоже, что у Мэтта Б это покрыто.Я просто хотел упомянуть, что вы, возможно, не захотите устанавливать максимальный размер кучи равным 4 ГБ, если вашей программе действительно не понадобится так много.Насколько я понимаю, JVM выделяет всю эту память для себя при запуске, а затем использует ее для запуска кода по мере необходимости.Если выделить столько памяти, то может вызвать проблемы с производительностью других приложений, которые вы используете.Вместо этого попробуйте увеличить его с шагом 128 МБ или больше, если ваш код требует много времени для сбоя.Или, может быть, вы можете использовать профилировщик памяти, чтобы увидеть, сколько места вы на самом деле используете?Я понятия не имею, существует ли такая вещь.

Вероятно, это не проблема вашей установки, но для простых смертных, таких как я, беспечное распределение такого большого количества памяти может быть проблематичным.

...