OpenJDK 9:将会移除HPROF和jhat
OpenJDK正在從JDK中廢棄HPROF agent 并移除“jhat”工具。這是OpenJDK 9的Java SE平臺借助Jigsaw實現(xiàn)模塊化的結果,為了準備模塊化,起草了多項提議(JEP),并且其中有很多都已經(jīng)接近完成了。
\\讓我們近距離地了解一下這兩個與模塊化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使用情況、爭用監(jiān)控等,它還可以將這些信息通過socket進行發(fā)送。HPROF無意成為生產(chǎn)型的工具,它能夠被下文所述的各種其他可選方案所替代:
\\HPROF能夠獲取heap allocation profile、CPU使用的采樣數(shù)據(jù)以及times profile,按照其最簡單的形式分別如下面的命令所示:
\\java -agentlib:hprof=heap=sites \u0026lt;classname\u0026gt;\\java -agentlib:hprof=cpu=samples \u0026lt;classname\u0026gt;\\java -agentlib:hprof=cpu=times \u0026lt;classname\u0026gt;\\相應的功能可以通過Java性能監(jiān)控工具VisualVM來實現(xiàn),這是一個可視化的工具,集成了多個命令行JDK工具和輕量級profiling功能。與HPROF不同,VisualVM能夠用在生產(chǎn)以及開發(fā)環(huán)境中,并且提供了額外的特性,如生成線程(和堆)dump、查看heap dump、本地和遠程的Java應用監(jiān)控以及離線性能分析等等。
\\HPROF也能通過如下的命令生成heap dump:
\\java -agentlib:hprof=heap=dump \u0026lt;classname\u0026gt;\\按照JEP 240,這個功能將會被JVM中相同的功能所取代,這是通過使用像“jcmd”和“jmap”這樣的命令行工具做到的,如下所示:
\\jcmd GC.heap_dump filename=\u0026lt;filename\u0026gt;\\或者
\\jmap [option] \u0026lt;pid\u0026gt;\\where \u0026lt;option\u0026gt;:\\-dump:\u0026lt;dump-options\u0026gt; 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=\u0026lt;file\u0026gt; dump heap to \u0026lt;file\u0026gt;\\Example: jmap -dump:live,format=b,file=heap.bin \u0026lt;pid\u0026gt;\\按照“jcmd”工具的文檔,如果要創(chuàng)建堆(hprof)dump的話,“jcmd”是推薦使用的工具。
\\移除“jhat”工具
\\“jhat”是一個堆分析工具,它會解析Java heap dump并且能夠在Web瀏覽器中查看解析過的heap dump。借助“jhat”,用戶可以執(zhí)行一些標準的查詢或使用 OQL接口編寫自定義的查詢。
\\按照JEP 241, jhat是一個實驗性的、不再支持的過時工具。盡管JEP并沒有指定特定的替代工具,但是InfoQ還是再次為用戶推薦 Java VisualVM ,用它來實現(xiàn)heap dump的創(chuàng)建、可視化和分析。VisualVM還允許用戶執(zhí)行自定義的查詢或使用標準的查詢。
\\在未來的報道中,我們將會繼續(xù)討論上述的使用場景。
\\查看英文原文:OpenJDK 9: Life Without HPROF and jhat
總結
以上是生活随笔為你收集整理的OpenJDK 9:将会移除HPROF和jhat的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [20180810]exadata--豆
- 下一篇: jsp中forward与sendRedi