OpenJDK 9:將會移除HPROF和jhat

jopen 9年前發布 | 7K 次閱讀 OpenJDK

 

OpenJDK正在從JDK中廢棄HPROF agent 并移除“jhat”工具。這是OpenJDK 9的Java SE平臺借助Jigsaw實現模塊化的結果,為了準備模塊化,起草了多項提議(JEP),并且其中有很多都已經接近完成了。

讓我們近距離地了解一下這兩個與模塊化JDK相關的JEP,它們的目標就在于移除HPROF agent和“jhat”工具:

移除JVM Tool Interface HPROF Agent

HPROF是一個profiler agent,它使用JVM Tool Interface(JVMTI)來提供工具接口,并且用到了 Bytecode Instrumentation 。HPROF agent能夠將profiling信息寫到文件中,這些信息包括基于allocation sites的堆使用情況、堆dump、CPU使用情況、爭用監控等,它還可以將這些信息通過socket進行發送。HPROF 無意成為生產型的工具 ,它能夠被下文所述的各種其他可選方案所替代:

HPROF能夠獲取heap allocation profile、CPU使用的采樣數據以及times profile,按照其最簡單的形式分別如下面的命令所示:

java -agentlib:hprof=heap=sites <classname>

java -agentlib:hprof=cpu=samples <classname>

java -agentlib:hprof=cpu=times <classname>

相應的功能可以通過Java性能監控工具 VisualVM 來實現, 這是一個可視化的工具,集成了多個命令行JDK工具和輕量級profiling功能 。與HPROF不同,VisualVM能夠用在生產以及開發環境中,并且提供了額外的特性,如生成線程(和堆)dump、查看heap dump、本地和遠程的Java應用監控以及離線性能分析等等。

HPROF也能通過如下的命令生成heap dump:

java -agentlib:hprof=heap=dump <classname>

按照 JEP 240 ,這個功能將會被JVM中相同的功能所取代,這是通過使用像“jcmd”和“jmap”這樣的命令行工具做到的,如下所示:

jcmd GC.heap_dump filename=<filename>

或者

jmap [option] <pid>

where <option>:

-dump:<dump-options> to dump java heap in hprof binary format

            dump-options:

             live         dump only live objects; if not specified,

                          all objects in the heap are dumped.

             format=b     binary format

             file=<file>  dump heap to <file>

Example: jmap -dump:live,format=b,file=heap.bin <pid>

按照“jcmd”工具的 文檔 ,如果要創建堆(hprof)dump的話,“jcmd”是推薦使用的工具。

移除“jhat”工具

“jhat”是一個堆分析工具,它會解析Java heap dump并且能夠在Web瀏覽器中查看解析過的heap dump。借助“jhat”,用戶可以執行一些標準的查詢或使用 OQL接口 編寫自定義的查詢。

按照JEP 241, jhat是一個實驗性的、不再支持的過時工具。 盡管JEP并沒有指定特定的替代工具,但是InfoQ還是再次為用戶推薦 Java VisualVM ,用它來實現heap dump的創建、可視化和分析。VisualVM還允許用戶執行自定義的查詢或使用標準的查詢。

在未來的報道中,我們將會繼續討論上述的使用場景。

查看英文原文: OpenJDK 9: Life Without HPROF and jhat

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!