Моя ситуация:
- 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? ... Пользователь щелкает в меню, и дамп должен быть создан.
- Могу ли я написать свой универсальный алгоритм для получения дампа кучи?