Java-приложение: попросить подождать в случае переполнения памяти - PullRequest
0 голосов
/ 09 августа 2010

У меня Java-приложение, которое порождает множество потоков .. и из-за ошибки нехватки памяти .. оно умирает, если оно выполняется слишком долго .. Есть ли параметр конфигурации jvm, который я могу установить, чтобы онбудет ждать памяти, когда память не доступна, вместо того, чтобы выбросить из памяти ошибку.

Ответы [ 2 ]

3 голосов
/ 09 августа 2010

Сделай резервную копию немного. Если ваше приложение создает так много потоков, что JVM не хватает памяти, вам действительно нужно провести рефакторинг, чтобы использовать какой-то механизм объединения потоков. Вы можете перехватить исключение нехватки памяти и посмотреть, освободили ли какие-либо потоки ресурсы, а затем вернуться без обработки, но для меня это неприятный запах кода.

0 голосов
/ 09 августа 2010

Я действительно не думаю, что это было бы целесообразно установить в качестве параметра jvm.Для -Xmx и -Xms должны быть установлены соответствующие значения для JVM.После этого в своем коде вы можете проверить текущую свободную память в куче, используя Runtime.freeMemory .Если свободной памяти слишком мало, вы, вероятно, можете заставить свой поток спать, пока у вас не будет достаточно памяти для обработки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...