我想分析在Windows上運行的Java UI應用程序的CPU使用率。我把它連接到VisualVM的,但它看起來像正在使用的Java虛擬機VM傾斜CPU
sum.rmi.transport.tcp.TCPTransport$ConnectionHandler.run();
CPU使用率最高的比例,我相信這是被用來提供信息的VisualVM,因此VisualVM的被歪曲,我試圖結果去弄清楚。有沒有人有辦法更好地指示正在發生的事情,或者有更好的方法來確定正在運行的Java應用程序正在佔用如此之多的CPU。
[Here's a way] to(http://stackoverflow.com/questions/266373/one-could-use-a-profiler-but-why-not-just-halt-the-program/317160#317160)to瞭解程序正在做什麼。基本上,把軟件看作是一個時鐘。第二種方法由分鐘方法,按小時方法,按日方法調用。如果你只是拍一張照片的快照,你可以通過檢查所有關卡來了解它正在做什麼。連續做好幾次,你就會知道花時間在哪裏。 – 2011-04-02 16:41:02
通過快照我假設你的意思是堆棧跟蹤。你怎麼知道哪些線程正在運行?與哪些線程阻塞?與哪些線程正在等待安排? – richs 2011-04-04 19:00:23
抓住他們,研究每一個。你可以很容易地分辨出每個人在做什麼。大多數你可以輕易忽視。你可以告訴哪一個人在意它在做什麼,不管它是在嘎吱嘎吱作響,還是在等待某個IO,或者是在睡覺等等。沒有必要的猜測。 – 2011-04-05 01:56:19