Student.java
public class Student {
}
Client.java
public class Client {
public static void main(String[] args) {
while (true) {
try {
Thread.sleep(1000);
new Student(); // 创建对象
System.out.println("Working...");
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
在 Call Tree 中直接就100%了,比较费解这段代码这么占CPU呢?
查看了官方文档也没具体介绍这里显示的是什么,只是说CPU,而且这里有浅红色、深红色两种颜色,有用过JProfiler的知道为啥占用情况这么高吗?
JProfiler 提供不同的方法來記錄存取樹以優化效能和細節。線程或者線程組以及線程狀況可以被所有的視圖選擇。所有的視圖都可以聚集到方法、類別、套件或J2EE元件等不同層。 CPU檢視部分包含四個部分:
存取樹 Call Tree
顯示一個累積的自頂向下的樹,樹中包含所有在JVM中已記錄的存取佇列。 JDBC,JMS和JNDI服務請求都被註解在請求樹中。請求樹可以根據Servlet和JSP對URL的不同需求進行拆分。
熱點 Hot Spots
顯示消耗時間最多的方法的清單。對每個熱點都能夠顯示回溯樹。此熱點可以按照方法請求,JDBC,JMS和JNDI服務請求以及按照URL請求來進行計算。
訪問圖 Call Graph
顯示一個從已選方法、類別、套件或J2EE元件開始的存取佇列的圖。
方法統計 Method Statistis
顯示一段時間內記錄的方法的呼叫時間細節。
所以,你的100%表示的是:訪問樹 Call Tree,顯示一個累積的自頂向下的樹,樹中包含所有在JVM中已記錄的訪問隊列。 JDBC,JMS和JNDI服務請求都被註解在請求樹中。請求樹可以根據Servlet和JSP對URL的不同需求進行拆分。