簡體   English   中英

如何在Java WebStart(JNLP)應用程序中獲得多個hprof轉儲?

[英]How do I get multiple hprof dumps in a Java WebStart (JNLP) application?

使用Java控制台應用程序,我可以這樣做:

java -agentlib:hprof=heap=dump,format=b MyClass

然后,只要想為堆拍攝快照以便以后進行分析,就可以隨時按ctrl-\\(或Windows上的ctrl-break)。

我想對Java Web Start應用程序執行相同的操作,但是似乎無法正常工作。 我可以使用JAVAWS_VM_ARGS環境變量傳遞agentlib參數,但是在控制台中輸入ctrl- \\和ctrl-break似乎沒有任何作用。 當程序啟動時,我得到的只是一個轉儲,這並不是很有趣,因為那時我還沒有登錄我們的程序並執行我想分析的事務。

使用以下JMV參數啟動應用程序以啟用JMX並在端口9004上啟動偵聽器:

-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port="9004"
-Dcom.sun.management.jmxremote.authenticate="false"
-Dcom.sun.management.jmxremote.ssl="false"

然后看一下這個Java程序,它可以連接到JMX服務器並按需進行堆轉儲。 源代碼包括注釋,這些注釋帶有指向Internet上2條有用文章的鏈接,這些文章幫助我完成了所有這些工作。 祝好運 !

鏈接: JmxHeapDumper.java

PS顯然讓JMX啟動WebStart應用程序很棘手,我發現了這一討論,希望對您有所幫助: http : //forums.java.net/jive/message.jspa?messageID=311717

您可以使用VisualVM從正在運行的應用程序中獲取堆轉儲。 VisualVM允許您瀏覽和保存堆轉儲。

暫無
暫無

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

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