Class CPUSampler

java.lang.Object
tools.CPUSampler

public class CPUSampler extends Object
以取樣方式剖析伺服器執行緒 CPU 熱點的效能診斷工具。

本類別以單例模式運作,啟動背景執行緒 SamplerThread, 每隔 interval 毫秒(預設 5 ms)呼叫 Thread.getAllStackTraces() 收集全執行緒堆疊快照,統計出現頻率最高的呼叫路徑。

主要操作流程:

  • addIncluded(prefix) 限縮要納入統計的套件前綴。
  • 呼叫 start() 開始取樣,stop() 停止。
  • getTopConsumers() 取得 SampledStacktraces 結果, 或以 save(Writer, minInvocations, topMethods) 輸出報告。
  • reset() 清除所有已累積的樣本。

取樣結果以 StacktraceWithCount 物件(含命中次數與堆疊)排序後回傳, 方便定位 GC 壓力、鎖競爭或 I/O 阻塞等熱點。

  • Constructor Details

    • CPUSampler

      public CPUSampler()
  • Method Details

    • getInstance

      public static CPUSampler getInstance()
    • setInterval

      public void setInterval(long millis)
    • addIncluded

      public void addIncluded(String include)
    • reset

      public void reset()
    • start

      public void start()
    • stop

      public void stop()
    • getTopConsumers

      public CPUSampler.SampledStacktraces getTopConsumers()
    • save

      public void save(Writer writer, int minInvocations, int topMethods) throws IOException
      Throws:
      IOException