2011-04-01 43 views
2

我想分析在Windows上運行的Java UI應用程序的CPU使用率。我把它連接到VisualVM的,但它看起來像正在使用的Java虛擬機VM傾斜CPU

sum.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(); 

CPU使用率最高的比例,我相信這是被用來提供信息的VisualVM,因此VisualVM的被歪曲,我試圖結果去弄清楚。有沒有人有辦法更好地指示正在發生的事情,或者有更好的方法來確定正在運行的Java應用程序正在佔用如此之多的CPU。

+0

[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

+0

通過快照我假設你的意思是堆棧跟蹤。你怎麼知道哪些線程正在運行?與哪些線程阻塞?與哪些線程正在等待安排? – richs 2011-04-04 19:00:23

+0

抓住他們,研究每一個。你可以很容易地分辨出每個人在做什麼。大多數你可以輕易忽視。你可以告訴哪一個人在意它在做什麼,不管它是在嘎吱嘎吱作響,還是在等待某個IO,或者是在睡覺等等。沒有必要的猜測。 – 2011-04-05 01:56:19

回答

0

這聽起來非常可疑。嘗試使用hprof的結果交叉引用數據。您不需要運行任何外部應用程序,數據將簡單地從您自己的進程轉儲到文本文件。你是否遠程連接到你的過程?

+0

VisualVM和我的應用程序都在同一臺機器上運行。 – richs 2011-04-01 22:07:56