我想在我的應用程序中添加一個選項,在該選項中,最終用戶可以啓動CPU分析,再現性能問題,停止CPU分析,然後將分析信息作爲電子郵件的附件發送給我們的支持團隊。我希望我可以使用JVisualVM用於停止和啓動分析並返回結果的相同機制。JVisualVM如何啓動和停止CPU分析?
有誰知道JVisualVM是如何實現這種功能的嗎?它不需要在命令行上設置-agentlib:hprof選項 - 它使用hprof還是其他一些機制?
我想在我的應用程序中添加一個選項,在該選項中,最終用戶可以啓動CPU分析,再現性能問題,停止CPU分析,然後將分析信息作爲電子郵件的附件發送給我們的支持團隊。我希望我可以使用JVisualVM用於停止和啓動分析並返回結果的相同機制。JVisualVM如何啓動和停止CPU分析?
有誰知道JVisualVM是如何實現這種功能的嗎?它不需要在命令行上設置-agentlib:hprof選項 - 它使用hprof還是其他一些機制?
JVisualVM儀器通過使用JMX命令動態地添加的試劑的代碼。這是不平凡的實施。你可能會發現JVisualVM有一個API,如果可以的話,我會使用它,而不是試圖自己實現它。如果它沒有公共的API,我懷疑它沒有,我建議嘗試一些簡單的。
該工具使用動態檢測。
當Profiler選項卡中的CPU按鈕被按下時,Profiler會附加到應用程序並開始分析其性能。在開始時,分析器需要測試應用程序的一些方法,實際的儀器化方法的數量顯示在狀態區域中。由於概要分析器使用動態檢測,所以在分析會話期間,檢測方法的數量可能會發生變化。分析器被連接並且開始收集數據。經過
https://blogs.oracle.com/nbprofiler/entry/profiling_with_visualvm_part_1
感謝您的答覆 - 我希望只是調用JVisualVM調用的任何方法來測試代碼並開始分析,這樣我就不必自己實現它(並且只需將JVisualVM jar包含在我的應用程序類路徑中)。我可能從CPU採樣開始,它只使用JMX連接到進程並調用ThreadMXBean.dumpAllThreads()來收集數據。如果這不夠準確,我可能會進一步調查完整的分析。再次感謝。 – Jason