Мне задали этот вопрос в недавнем интервью 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, но я не очень уверен, что если использовать для достижения этой цели.