Дамп кучи Java программно

Моя ситуация:

  • Java 1.3 или 1.8
  • Windows CE или Windows Mobile
  • КПК, а не рабочий стол
  • jmap.exe недоступен

Чтобы программно получить дамп кучи, мне нужен класс com.ibm.jvm.Dump, но этот класс обычно недоступен, поэтому я получаю ClassNotFoundException.

// Has to be run like this:
// cmd> javaPath -Xdump -Xmn5m -jar myJarPath
Class dump = Class.forName("com.ibm.jvm.Dump");
dump.getMethod("JavaDump", new Class[] {}).invoke(null, null);
dump.getMethod("HeapDump", new Class[] {}).invoke(null, null);
dump.getMethod("SystemDump", new Class[] {}).invoke(null, null);
// On some devices may occur ClassNotFoundException com.ibm.jvm.Dump
// or is missing j9dmp24 (but I don't understand this as all DLLs are in the device)
// do not forget to add parameter -Xdump when you are running your app. This parameter should probably be the 1st.
// I had error UTE437: Unable to load formatStrings for j9mm .. So I had to add parameter -Xmn5m
  • Есть ли другие способы программно создать дамп кучи на всех разных Java? ... Пользователь щелкает в меню, и дамп должен быть создан.
  • Могу ли я написать свой универсальный алгоритм для получения дампа кучи?

person Racky    schedule 03.11.2016    source источник
comment
попробуйте это: blogs.oracle.com/sundararajan/entry/   -  person Amit G    schedule 03.11.2016


Ответы (1)


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

person Racky    schedule 08.11.2016