Как вы обнаруживаете нехватку памяти в виртуальной машине Java? - PullRequest
3 голосов
/ 25 октября 2008

В последнее время в моем приложении появляются ошибки OutOfMemory. Можно ли заранее определить, когда виртуальной машине не хватает памяти? Другими словами, превентивно иметь дело с ошибками OutOfMemory до их фактического появления?

Ответы [ 3 ]

6 голосов
/ 25 октября 2008

Java (начиная с Java 5) теперь имеет стандартный компонент JMX, который можно использовать для получения уведомлений о нехватке памяти. Смотри java.lang.management.MemoryMXBean.

3 голосов
/ 25 октября 2008

Я предлагаю задать лучший вопрос: «Почему моему приложению не хватает памяти?»

Возможно, вам придется увеличить объем памяти, доступной для JVM при запуске; У вас может быть утечка памяти (объекты, которые не освобождаются, когда они больше не нужны.)

Также может быть полезна дополнительная информация о приложении

  • Работает ли он непрерывно, 24x7x365?
  • Он запускается один раз и выходит?

Лучше всего использовать инструменты мониторинга / профилирования производительности для поиска причины проблемы с памятью.

2 голосов
/ 25 октября 2008

Посмотрите на метод freeMemory среды выполнения (подробнее см. http://java.sun.com/javase/6/docs/api/java/lang/Runtime.html)

Короче говоря: делать

Runtime.getRuntime().freeMemory()
...