我是Java中的新成員,並且有一個任務來了解爲什麼在一段時間後運行服務器需要佔用100%的CPU。我想我應該看看,這個應用程序中的線程正在做什麼。由於我想停止服務,第5605線程已經啓動。如何控制哪些線程停止或不運行,或運行時間過長?如何控制線程是否停止或運行時間過長?
謝謝。
我是Java中的新成員,並且有一個任務來了解爲什麼在一段時間後運行服務器需要佔用100%的CPU。我想我應該看看,這個應用程序中的線程正在做什麼。由於我想停止服務,第5605線程已經啓動。如何控制哪些線程停止或不運行,或運行時間過長?如何控制線程是否停止或運行時間過長?
謝謝。
如果您在* nix環境首先嚐試查找進程的ID
被阻塞的線程根本不使用任何CPU。 – 2012-04-04 13:01:30
嘗試將Jconsole附加到進程並查看實際發生的事情http://docs.oracle.com/javase/1.5.0/docs/guide/management/jconsole.html – srinik 2012-04-04 15:45:17
服務器和客戶端jvms(Java虛擬機)是不同的。客戶的想法基本上是「你會成爲其他男人試圖使用相同資源的人」。服務器思維是「繼續前進,你爲自己獲得了所有的操場」。
我想你應該看看Java分析器如http://www.yourkit.com/ – Gray 2012-04-04 12:26:20
看看這個答案我張貼在以前的問題:http://stackoverflow.com/a/ 6868752/425406這將討論如何識別CPU佔用的代碼片段 – Sean 2012-04-04 12:48:30