簡體   English   中英

以編程方式進行Java堆轉儲

[英]Java Heap Dump programmatically

我的情況是:

  • Java 1.3或1.8
  • Windows CE或Windows Mobile
  • PDA,而不是台式機
  • 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中以編程方式創建堆轉儲嗎? ...用戶單擊菜單,應創建轉儲。
  • 我可以編寫自己的通用算法來獲取堆轉儲嗎?

好。 因此,似乎該問題和注釋中提到的2種方法僅在某些設備上有效。 如果其中一個有效,則另一個無效。 您必須將它們結合起來,它將起作用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM