簡體   English   中英

使用VisualVM分析應用程序

[英]Profiling application with VisualVM

想象一下,你有一個命令行應用程序,它接受輸入文件並用它做一些事情。 現在假設您想要對此應用程序進行采樣/配置。 如果它是Visual Studio,您只需選擇分析方法(采樣/檢測),VS將為您運行應用程序並在程序完成時收集數據。 但據我所知,VisualVM中沒有類似的功能。 您必須運行您的應用程序,然后在VisualVM中選擇它,然后顯式開始采樣/分析。 問題是,有時使用某些輸入數據執行程序所需的時間比設置VisualVM所需的時間短。 使用這種方法也不可能批量配置應用程序。 有人建議從Eclipse開始以調試模式啟動應用程序,並在main()方法的開頭某處設置斷點。 然后設置VisualVM並繼續執行。 但我懷疑在Debug vs Release模式下運行會對其自身產生性能影響。 建議?

如果程序執行I / O,則Visual Studio采樣器將看不到I / O,因為它是“CPU采樣器”(即使幾乎所有時間都花在等待I / O上)。

如果使用“檢測”,則不會看到任何行級信息,因為它僅在功能級別進行匯總。

我用這種技術

如果程序運行得太快而無法采樣,只需在其周圍放置一個臨時外環,比如100或1000次迭代。

調試和發布模式之間的區別幾乎沒有,除非您在緊密循環中花費很長一段時間, 在代碼中 ,循環不包含任何函數調用,或者如果您正在執行數據結構操作庫中有很多驗證。

如果你是,那么你的樣品將證明你是,並且你會知道Release會產生速度差異。

就批量分析而言,我不這樣做。 我只關注該計划的整體吞吐率。 如果有一些輸入似乎需要花費太長時間,那么我使用該輸入對程序進行采樣過程,查看問題所在並進行修復。

VisualVM 1.3.6有一個新的Startup Profiler插件 ,允許您從啟動時分析您的應用程序。 有關其他信息,請參閱此文章

暫無
暫無

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

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