国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

JVM詳解3.JDK監控和故障處理工具

Keven / 609人閱讀

摘要:點擊進入我的博客命令行工具這些工具大多數是類庫的一層薄的包裝,它們的主要功能代碼是在類庫中實現的。可視化工具是到目前為止隨發布的功能最強大的運行監視和故障處理程序,并且可以預見在未來一段時間內都是官方主力發展的虛擬機故障處理工具。

點擊進入我的博客 3.1 JDK命令行工具



這些工具大多數是tools.jar類庫的一層薄的包裝,它們的主要功能代碼是在tools類庫中實現的。還有一些甚至就是由Shell腳本直接生成的。

名稱 作用
jps JVM Process Status Tool,顯示指定系統內所有的HotSpot虛擬機進程
jstat JVM Statistics Monitoring Tool,用于收集HotSpot虛擬機各方面的運行數據
jinfo Configuration Info for Java,顯示虛擬機配置信息
jmap Memory Map for Java,生成虛擬機的內存轉儲快照(heapdump文件)
jhat JVM Heap Dump Browser,用于分析heapmap文件,它會建立一個http/html服務器讓用戶可以在瀏覽器上查看分析結果
jstack Stack Trace for Java,顯示虛擬機的線程快照
3.1.1 jps:虛擬機進程狀況工具
作用

可以列出正在運行的虛擬機進程,并顯示虛擬機執行主類名稱(main()函數所在的類)以及這些進程的本地虛擬機唯一ID(Local Virtual Machine Identifier)。

對于本地虛擬機進程來說,LVMI與操作系統的進程ID(Process Identifier,PID)是一致的。

jps可以通過RMI協議開啟了RMI服務的遠程虛擬機進程狀態,hostid為RMI注冊表中注冊的主機名。

命令格式

jsp [options] [hostid]

主要選項

屬性 | 作用

-p | 只輸出LVMID,省略主類的名稱
-m | 輸出虛擬機進程啟動時傳遞給主類main()函數的參數
-l | 輸出主類的全名,如果進程執行的是jar包,輸出jar路徑
-v | 輸出虛擬機進程啟動時jvm參數

3.1.2 jstat:虛擬機統計信息監視工具
作用

jstat是用于監視虛擬機各種運行狀態信息的命令行工具。它可以顯示本地或者遠程虛擬機進程中的類裝載、內存、垃圾回收、JIT編譯等運行數據,在沒有GUI圖形界面,只是提供了純文本控制臺環境的服務器上,它將是運行期定位虛擬機性能問題的首選工具。

命令格式

jstat [option vmid [interval [s|ms] [count]]]

對于命令格式中的VMID和LVMID,如果是本地虛擬機進程,VMID和LVMID是一致的

如果是遠程虛擬機,那VMID的格式應當是:[protocol:] [//] lvmid[@hostname[:port]/servername]

參數interval和count分別表示查詢的間隔和次數,如果省略這兩個參數,說明只查詢一次。

主要選項
選項 作用
-class 監視裝載類、卸載類、總空間以及類裝載所耗費的時間
-gc 監視java堆狀況,包括eden區、兩個survivor區、老年代、永久代等的容量、已用空間、GC時間合計信息
-gccapacity 監視內容與-gc基本相同,但輸出主要關注java堆各個區域使用到最大、最小空間
-gcutil 監視內容與-gc基本相同,但輸出主要關注已使用控件占總空間的百分比
-gccause 與-gcutil功能一樣,但是會額外輸出導致上一次gc產生的原因
-gcnew 監視新生代GC情況
-gcnewcapacity 監視內容與-gcnew基本相同,輸出主要關注使用到的最大、最小空間
-gcold 監視老年代GC情況
-gcoldcapacity 監視內容與-gcold基本相同,輸出主要關注使用到的最大、最小空間
-gcpermcapacity 輸出永久代使用到的最大、最小空間
-compiler 輸出JIT編譯過的方法、耗時等信息
-printcompilation 輸出已經被JIT編譯過的方法
示例

S0:Survivor1區當前使用比例

S1:Survivor2區當前使用比例

E:Eden區使用比例 9.36%

O:老年代使用比例

M:元數據區使用比例

CCS:壓縮使用比例

YGC:年輕代垃圾回收次數 7次

FGC:老年代垃圾回收次數 6次

FGCT:老年代垃圾回收消耗時間 0.119秒

GCT:垃圾回收消耗總時間 0.145秒

3.1.3 jinfo:Java配置信息工具
作用

jinfo的作用是實時的查看和調整虛擬機各項參數。

命令格式

jinfo [option] pid

主要選項
選項 作用
-flag to print the value of the named VM flag
-flag [+/-] to enable or disable the named VM flag
-flag = to set the named VM flag to the given value
-flags to print VM flags
-sysprops to print Java system properties
to print both of the above
-h / -help to print this help message
3.1.4 jmap:Java內存映像工具
作用

jmap命令用于生成堆轉儲快照。

查詢finalize執行隊列、java堆和永久代的詳細信息。如空間使用率、當前用的是哪種收集器等。

命令格式

jmap [option] vmid

主要選項
選項 作用
-dump 生成java堆轉儲快照。格式為: -dump:[live,]format=b,file=,其中live子參數說明是否只dump出存活的對象
-finalizerinfo 顯示在F-Queue中等待Finalizer線程執行finalize方法的對象。只在Linux/Solaris平臺下有效
-heap 顯示java堆詳細信息,如使用哪種收集器、參數配置、分代情況等,在Linux/Solaris平臺下有效
-jisto 顯示堆中對象統計信息,包含類、實例對象、合集容量
-permstat 以ClassLoader為統計口徑顯示永久代內存狀態。只在Linux/Solaris平臺下有效
-F 當虛擬機進程對-dump選項沒有相應時。可使用這個選項強制生成dump快照。只在Linux/Solaris平臺下有效
3.1.5 jhat:虛擬機堆轉儲快照分析工具
作用

提供jhat與jmap搭配使用,來分析dump生成的堆快照。jhat內置了一個微型的HTTP/HTML服務器,生成dump文件的分析結果后,可以在瀏覽器中查看。

一般不會去直接使用jhat命令來分析demp文件:原因一是一般不會在部署應用程序的服務器上直接分析dump文件,一般會盡量將dump文件拷貝到其他機器上進行分析,因為分析工作是一個耗時且消耗硬件資源的過程,既然都要在其他機器上進行,就沒必要受到命令行工具的限制了;另外一個原因是jhat的分析功能相對來說很簡陋,VisualVM以及專門分析dump文件的Eclipse Memory Analyzer、IBM HeapAnalyzer等工具,都能實現比jhat更強大更專業的分析功能。

命令格式

jhat [ options ] heap-dump-file

3.1.6 jstack:java棧跟蹤工具
作用

jstack命令用于生成虛擬機當前時刻的線程快照。

線程快照就是當前虛擬機內每一條線程正在執行的方法堆棧集合,生成線程快照的主要目的是定位線程出現長時間停頓的原因,如線程死鎖、死循環、請求外部資源導致長時間等待等。

命令格式

jstack [option] vmid

主要選項
選項 作用
-F 當正常輸出的請求不被響應時,強制輸出線程堆棧
-l 除堆棧外,顯示關于鎖的附加信息
-m 如果調用到本地方法的話,可以顯示c/c++的堆棧
3.2 JConsole:JDK可視化工具

JConsole ( Java Monitoring and Management Console ) 是—種基于JMX的可視化監視管理工具。它管理部分的功能是針對JMX MBean進行管理,由于MBean可以使用代碼、中間件服務器的管理控制臺或者所有符合JMX規范的軟件進行訪問。

概覽

“概述”頁簽顯示的是整個虛擬機主要運行數據的概覽,其中包括“堆內存使用情況”、“線程”、“類”、“CPU使用情況”4種信息的曲線圖

內存

“內存”頁簽相當于可視化的jstat命令,用于監視受收集器管理的虛擬機內存(Java堆和永久代)的變化趨勢。

線程

“線程”頁簽的功能相當于可視化的jstack命令,遇到線程停頓時可以使用這個頁簽進行監控分析。

3.3 VisualVM:可視化工具

VisualVM(All-in-One Java Troubleshooting Tool)是到目前為止隨JDK發布的功能最強大的運行監視和故障處理程序,并且可以預見在未來一段時間內都是官方主力發展的虛擬機故障處理工具。官方在VisualVM的軟件說明中寫上了“All-in-One” 的描述字樣,預示著它除了運行監視、故障處理外,還提供了很多其他方面的功能。如性能分析,VisualVM的性能分析功能甚至比起JProfiler、YourKit等專業且收費的Profiling工具都不會遜色多少,而且VisualVM的還有一個很大的優點:不需要被監視的程序基于特殊Agent運行,因此它對應用程序的實際性能的影響很小,使得它可以直接應用在生產環境中。這個優點是JProfiler、YourKit等工具無法與之媲美的。

VisualVM兼容范圍與插件安裝

VisualVM基于NetBeans平臺開發,因此它一開始就具備了插件擴展功能的特性,通過插件擴展支持,VisualVM可以做到:

顯示虛擬機進程以及進程的配置、環境信息(jps、 jinfo)。

監視應用程序的CPU、GC、堆、方法區以及線程的信息(jstat、jstack)。

dump以及分析堆轉儲快照(jmap、jhat)。

方法級的程序運行性能分析,找出被調用最多、運行時間最長的方法。

離線程序快照:收集程序的運行時配置、線程dump、內存dump等信息建立個快照, 可以將快照發送開發者處進行Bug反饋。

生成、瀏覽堆轉儲快照

在VisualVM中生成dump文件有兩種方式,可以執行下列任一操作:

在“應用程序”窗口中右鍵單擊應用程序節點,然后選擇“堆Dump”。

在“應用程序”窗口中雙擊應用程序節點以打開應用程序標簽,然后在“監視”標簽中單擊“堆Dump”。

分析程序性能

在Profiler頁簽中,VisualVM提供了程序運行期間方法級的CPU執行時間分析以及內存分析,做Profiling分析肯定會對程序運行性能有比較大的影響,所以一般不在生產環境中使用這項功能。

BTrace動態日志跟蹤

BTrace本身也是可以獨立運行的程序。它的作用是在不停止目標程序運行的前提下,通過HotSpot虛擬機的HotSwap技術動態加入原本并不存在的調試代碼。這項功能對實際生產中的程序很有意義:經常遇到程序出現問題,但排查錯誤的一些必要信息,譬如方法參數、返回值等,在開發時并沒有打印到日志之中,以至于不得不停掉服務,通過調試增量來加入日志代碼以解決問題。當遇到生產環境服務無法隨便停止時,缺一兩句日志導致排錯進行不下去是一件非常郁悶的事情。BTrace的用法還有許多,打印調用堆棧、參數、返回值只是最基本的應用,在它的網站上有使用BTrace進行性能監視、定位連接泄漏和內存泄漏、解決多線程競爭問題的例子。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/72763.html

相關文章

  • 深入理解虛擬機之虛擬機性能監控故障處理工具

    摘要:監控和故障處理工具顯示指定系統內所有的虛擬機進程用于收集虛擬機各方面的運行數據。的常用功能選項測試上面輸出了我正在運行程序的包名下的類名虛擬機統計信息監視工具使用于監視虛擬機各種運行狀態信息的命令行工具。 《深入理解Java虛擬機:JVM高級特性與最佳實踐(第二版》讀書筆記與常見面試題總結 本節常見面試題(推薦帶著問題閱讀,問題答案在文中都有提到): JVM調優的常見命令行工具有哪些?...

    jas0n 評論0 收藏0
  • 同樣是做后端的,為什么你同學年薪80萬,你20多萬?

    摘要:然而偶爾的一次聚會,你聽說和自己一起出道的同學早已經年薪萬,而自己卻囊中羞澀。這個時候,你可能會懷疑自己的能力,也痛恨為什么當初自己沒有好好復習。 作為一個 Java 程序員,我們深知水平的深淺決定你的收入高低,月工資下到七八千,上到十幾萬都是很正常的事情。許多人的現狀是平時總是陷在業務開發...

    鄒強 評論0 收藏0
  • 麻了,都是科班出身的,學弟月薪卻是我的3倍。

    摘要:可現在五年過去了,他想跳槽卻鮮有人問津。最可氣的是比他晚一年畢業的學弟,勤勤懇懇在一家中型互聯網企業干了年,現在已經跳槽到了阿里,月薪是我這個同學的倍。 我有個同學大學畢業,因為卻少工作經驗,又不愿意去正經的互聯網企業做實習生,他嫌工資太低,于是進了家外包公司,那時候感覺待遇還可以。可現在五...

    wangzy2019 評論0 收藏0
  • 作為一名Java程序員,因為偷偷接私活被...

    摘要:接私活對程序員這個圈子來說是一個既公開又隱私的話題,不說全部,應該大多數程序員都有過想要接私活的想法,當然,也有部分得道成仙的不主張接私活。 接私活 對程序員這個圈子來說是一個既公開又隱私的話題,不說全部,應該大多數程序員都有過想要接私活的想法,當然,也有部分得道成仙的不主張接私活。但是很少...

    Aomine 評論0 收藏0
  • Java程序員工作3年,薪資為何會被應屆生倒掛?

    摘要:同時也會關注市場上同崗位薪資,以便對企業內部薪資結構做出相應調整。一般來說,相同崗位和職責的員工,薪資低于市場不超過,都屬于合理范疇,因為一個員工不會為了的薪酬而跳槽。同時,還能激勵員工自我提升,以獲得相應技能市場所給予的報酬。 各位職場人都聽說過薪資倒掛這詞兒吧,這個情況在行業內早就不是什...

    szysky 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<