2013-04-08 7 views
1

Мне задали этот вопрос в недавнем интервью Java. Когда мы получаем исключение OutOfMemory, как узнать, какой класс и какой метод выбрал OutOfMemory Exception. Я ответил, что он войдет в стек, но он сказал мне, что много раз он не скажет вам, какой конкретный метод/класс выбрал это исключение. Я предполагаю, что он ожидал некоторого инструмента или аргумента JVM, который может помочь. Но я никогда не использовал его, поэтому я не мог ответить.Сведения об исключении OutofMemory

Я пробовал простой пример, где я помещаю значения в хэш-карту в бесконечном цикле. Через некоторое время я получил ошибку OutOfMemory, и она показывает имя класса/метода и номер строки. Я хочу понять, каковы сценарии, где он не даст вам этих данных [method/classname] и какие аргументы инструмента/виртуальной машины я могу использовать, чтобы узнать это.

**Exception in thread "main" java.lang.OutOfMemoryError: Java heap space 
    at java.util.Arrays.copyOf(Unknown Source) 
    at java.lang.AbstractStringBuilder.expandCapacity(Unknown Source) 
    at java.lang.AbstractStringBuilder.ensureCapacityInternal(Unknown Source) 
    at java.lang.AbstractStringBuilder.append(Unknown Source) 
    at java.lang.StringBuilder.append(Unknown Source) 
    at hashmapTest.main(hashmapTest.java:18)** 

Я также читал об этом VM аргумент Xms1024m -Xmx1024m -XX: + HeapDumpOnOutOfMemoryError -XX: HeapDumpPath, но я не очень уверен, что если использовать для достижения этой цели.

ответ

0

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

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

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

Смежные вопросы