您好,登錄后才能下訂單哦!
本篇文章為大家展示了JVM Log技術原理及用法是什么,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
介紹一下JVM Log的概念,初始化和釋放,JVM Log各個class的實現除了很自然地運用了繼承,同時運用重載new/deleteoperator這個C++特有的技巧,也 有效地封裝了JVM Log的創建和釋放功能。
JVM Log簡介
JVM在調試版本下,會輸出hotspot.JVM Log。通過參數-XJVM Loggc:FileName,來設置GC的JVM Log。
JVM Log的實現主要在
\hotspot\src\share\vm\utilities\ostream.hpp \hotspot\src\share\vm\utilities\ostream.cpp \hotspot\src\share\vm\utilities\xmlstream.hpp \hotspot\src\share\vm\utilities\xmlstream.cpp \hotspot\src\share\vm\utilities\defaultStream.hpp
主要的class是:outputStream、fileStream、xmlTextStream、defaultStream
繼承關系是:
ResourceObj
|
|-- outputStream
|
|--- fileStream
|
|--- xmlTextStream
|
|--- defaultStream
defaultStream::instance是其他模塊調用的主要接口。
JVM Log的初始化
ostream_init()初始化defaultStream::instance
ostream_init_JVM Log()初始化JVM的DebugJVM Log和GC的JVM Log,
其中其核心代碼是:defaultStream::instance->has_JVM Log_file();它轉而調用voiddefaultStream::init_JVM Log();這是真正干活的代碼了。
defaultStream::init_JVM Log的代碼寫的很清晰,其中只有一個C++的語法點需要注意:重載newoperator。
ostream.cppline346
fileStream*file=new(ResourceObj::C_HEAP)fileStream(try_name);
這是因為outputStream的父類是ResourceObj,ResourceObj重載了new和deleteoperator。關于C++語法就不多說了,太多的好書論及了這個問題。
JVM Log的最終釋放
Threads::destroy_vm()
|
|--> exit_globals()
|
|--> ostream_exit()
|
|--> 用delete operator釋放掉各個JVM Log
JVM Log各個class的實現除了很自然地運用了繼承,同時運用重載new/deleteoperator這個C++特有的技巧,也 有效地封裝了JVM Log的創建和釋放功能。
上述內容就是JVM Log技術原理及用法是什么,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。