Я хочу собрать дамп кучи на JVM аварииКак свалить кучу кучи?
Так я написал простой код
public class Test {
private String name;
public Test(String name) {
this.name = name;
}
public void execute() {
Map<String,String> randomData = new HashMap<String,String>();
for(int i=0;i<1000000000;i++) {
randomData.put("Key:" + i,"Value:" + i);
}
}
public void addData() {
}
public static void main(String args[]) {
String myName = "Aniket";
Test tStart = new Test(myName);
tStart.execute();
}
}
и я бегу его следующим образом
[[email protected] Desktop]$ java -cp . -Xms2m -Xmx2m Test
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at Test.execute(Test.java:15)
at Test.main(Test.java:25)
я получил OutOfMemoryError, который я хотел, но там это не куча дампа в рабочем каталоге (например, hs_err_pidXXXX.log
, которого я ожидал). Что мне не хватает? Как получить кучу кучи?
Update:
Я попытался -XX:ErrorFile=.
еще никакой пользы. Если выше это не способ получить кучу кучи (Crash JVM), как я могу свернуть свою JVM, чтобы получить эти журналы?
'hs_err_pidXXXX.log' создается только в случае сбоя JVM, а не приложения. –
вы можете зарегистрировать дамп кучи, используя eclipse, чтобы узнать подробности http://stackoverflow.com/questions/837351/how-do-i-save-the-heap-dump-to-a-file-in-eclipse – Dileep
Затем как я разбиваю свою JVM? Мне нужно сгенерировать этот файл. –