2017-06-16 43 views
4

有沒有一種方法可以監控Java ForkJoinPool隨着時間的推移而發生的變化,特別是CountedCompleter的有效性如何?顯示器Java 8 ForkJoinPool

  • 子任務需要多長時間才能執行?
  • 子任務之一是否比其他子任務長?
  • 它們是並行執行嗎?

應用於CountedCompleter javadoc的觸發器的例子中,監測工具會告訴我,PacketSender完成後,通過HeaderBuilder它最先啓動,但花了13秒,而BodyBuilder了4S和前完成限制。

我尋找這樣一個工具,主要是作爲一個Java代理,不要用不必要的統計數據污染我的生產代碼,但什麼都沒發現。

感謝所有幫助

+0

好的問題,據我所知,他們不得不用內部來測試這... – Eugene

+0

你好@Eugene,是的,這也是我的想法。讓我們來看看 – Kineolyan

+0

AlekseyShipilëv(https://shipilev.net/)在Java7的FJP上做了一個基準測試。我記得結果很糟糕。我沒有看到Java8的基準。爲了監視FJ類,您需要從zip文件中提取源代碼並添加自己的代碼來跟蹤事物。 FJ Classes的許多工作只專注於工作,而不是提供統計數據。 – edharned

回答

0

最好的(和現實唯一)的方法是使用AOP對方法調用和記錄開始和結束時間戳和上下文可以收集統計分析「間諜」。

我已經使用AspectJ效果良好,可以推薦它,但任何這樣的庫應該工作。

+0

Hello Bohemian,到目前爲止,我設法通過使用javassist創建Java代理來捕獲開始和結束計算的各種統計信息。我的問題是現在正確導出它,因爲我在stdout中打印統計信息,生成的數據太多。我也會看看AspectJ。 – Kineolyan