簡體   English   中英

使用 Flight Recorder 和 JDK Mission Control 計算更多方法

[英]Take more method count with Flight Recorder and JDK Mission Control

背景

我正在嘗試使用飛行記錄器檢查我的 Java 批處理應用程序以提高啟動性能。 現在啟動大約需要 20 秒,而我正在努力使其不到 10 秒。

該應用程序使用 Spring Boot 2.2 和 Spring Batch 構建,並在 JDK 11 上運行。我使用的是 Flight Recorder 而不是 VisualVM,因為 JDK 11 不包含開箱即用的 VisualVM(在檢查環境中安裝其他工具並非不可能,但受到限制)。

問題

我認為我可以使用 Flight Recoder 檢查啟動過程,所以我運行了這樣的應用程序:

java -XX:StartFlightRecording=filename=demo.jfr,settings=profile -jar .\build\libs\demo-0.0.1-SNAPSHOT.jar -spring.batch.job.names importUserJob -spring.batch.job.enabled false

但 Mission Control 在“方法分析”面板中僅顯示約 100 個計數。 了解整個啟動過程的趨勢並檢查哪種方法在該過程中花費的時間最多,這太少了。

問題

如何使用 Flight Recorder 和 JDK Mission Control 獲取更多方法計數? .jfc文件中的哪個參數會影響方法計數的數量?

如果您運行的是 JDK 13 或更高版本,則可以將采樣模式設置為“Ludicrous”。

它將每毫秒對線程進行一次采樣。 您可以將 go 轉換為 Window -> 模板管理器和 select “可笑”模式進行方法分析,然后導出.jfc 文件並使用它啟動您的應用程序:

 $ java -XX:StartFlightRecording:settings=/settings/my.jfc ...

或者您可以將 go 放入 JAVA_HOME/lib/jfr/ 並將 default.jfc 復制到一個新文件並編輯它顯示 jdk.ExecutionSample 的期間。 您可以設置的最小值為 1 毫秒。

開銷會增加,但你會得到更多的樣本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM