摘要:監(jiān)控和故障處理工具顯示指定系統(tǒng)內(nèi)所有的虛擬機進程用于收集虛擬機各方面的運行數(shù)據(jù)。的常用功能選項測試上面輸出了我正在運行程序的包名下的類名虛擬機統(tǒng)計信息監(jiān)視工具使用于監(jiān)視虛擬機各種運行狀態(tài)信息的命令行工具。
《深入理解Java虛擬機:JVM高級特性與最佳實踐(第二版》讀書筆記與常見面試題總結(jié)
本節(jié)常見面試題(推薦帶著問題閱讀,問題答案在文中都有提到):
JVM調(diào)優(yōu)的常見命令行工具有哪些?
1 概述給一個系統(tǒng)定位問題的時候,知識、經(jīng)驗是關(guān)鍵基礎(chǔ),數(shù)據(jù)是依據(jù),工具是運用知識處理數(shù)據(jù)的手段。經(jīng)常 使用適當(dāng)?shù)奶摂M機監(jiān)控和分析工具可以加速我們分析數(shù)據(jù)、定位解決問題的速度,但在學(xué)習(xí)工具前,也應(yīng)當(dāng)意識到工具永遠都是知識技能的一層包裝,并沒有什么工具是“秘密武器”,不可能學(xué)會了就能包治百病。
2 JDK命令行工具(JDK安裝的bin目錄下):下面這些命令行工具java.exe以及javac.exe我們都很熟悉了,下面我們主要看看其他命令行工具的作用。
jps:JVM Process Status Tool ,顯示指定系統(tǒng)內(nèi)所有的HotSpot虛擬機進程
jstat: JVM Statistics Monitoring Tool ,用于收集HotSpot虛擬機各方面的運行數(shù)據(jù)。
jinfo: Configuration Info forJava,顯示虛擬機配置信息
jmap: Memory Map for Java,生成虛擬機的內(nèi)存轉(zhuǎn)儲快照(heapdump文件)
jhat: JVM Heap Dump Browser ,用于分析heapdump文件,它會建立一個HTTP/HTML服務(wù)器,讓用戶可以在瀏覽器上查看分析結(jié)果
jstack: Stack Trace forJava,顯示虛擬機的線程快照
2.1 jps:虛擬機進程狀況工具JDK的很多小工具的名字都參考了UNIX命令的命名方式,jps(JVM Process Status) 是其中的典型。除了名字像UNIX的ps命令外,它的功能也和ps命令類似:可以列出正在運行的虛擬機進程,并顯示虛擬機執(zhí)行主類名稱以及這些進程的本地虛擬機唯一ID(Local Virtual Machine Identifier,LVMID)。雖然功能比較單一,但它是使用最高的JDK命令行工具,因為其他的JDK工具大多需要輸入它查詢到的LVMID來確定要監(jiān)控的是哪一個虛擬機進程。
jps的常用功能選項:
測試:
上面輸出了我正在運行程序的包名下的類名:
jstat(JVM Statistics Monitoring Tool) 使用于監(jiān)視虛擬機各種運行狀態(tài)信息的命令行工具。 它可以顯示本地或者遠程(需要遠程主機提供RMI支持)虛擬機進程中的類信息、內(nèi)存、垃圾收集、JIT編譯等運行數(shù)據(jù),在沒有GUI,只提供了純文本控制臺環(huán)境的服務(wù)器上,它將是運行期間定位虛擬機性能問題的首選工具。
jstat主要工具選項:
測試:
jinfo(Configuration Info for Java) 的作用是實時地查看和調(diào)整虛擬機各項參數(shù)。 使用jps命令的-v可以查看虛擬機啟動時顯式指定的參數(shù)列表,但如果想知道未被顯式指定的參數(shù)的系統(tǒng)默認值,可以使用jinfo的-flag選項進行查詢,jinfo還可以使用-sysprops選項把虛擬機進程的System.getProperties()的內(nèi)容打印出來。
測試:
jmap(Memory Map for Java)命令用于生成堆轉(zhuǎn)儲快照。 如果不使用jmap命令,要想獲取Java堆轉(zhuǎn)儲,可以使用“-XX:+HeapDumpOnOutOfMemoryError”參數(shù),可以讓虛擬機在OOM異常出現(xiàn)之后自動生成dump文件,Linux命令下可以通過kill -3發(fā)送進程退出信號也能拿到dump文件。
jmap的作用并不僅僅是為了獲取dump文件,它還可以查詢finalize執(zhí)行隊列、Java堆和永久代的詳細信息,如空間使用率、當(dāng)前使用的是哪種收集器等。和jinfo一樣,jmap有不少功能在Windows平臺下也是受限制的,除了生成dump文件的-dump選項和用于查看每個類的實例、空間占用統(tǒng)計的-histo選項在所有操作系統(tǒng)都提供之外,其余選項都只能在Linux和Solaris系統(tǒng)下使用。
2.5 jstack:Java堆棧跟蹤工具jstack(Stack Trace for Java)命令用于生成虛擬機當(dāng)前時刻的線程快照。線程快照就是當(dāng)前虛擬機內(nèi)每一條線程正在執(zhí)行的方法堆棧的集合.
生成線程快照的目的主要是定位線程長時間出現(xiàn)停頓的原因,如線程間死鎖、死循環(huán)、請求外部資源導(dǎo)致的長時間等待等都是導(dǎo)致線程長時間停頓的原因。線程出現(xiàn)停頓的時候通過jstack來查看各個線程的調(diào)用堆棧,就可以知道沒有響應(yīng)的線程到底在后臺做些什么事情,或者在等待些什么資源。**
3 JDK可視化工具:JConsole和VisualVM是兩個功能強大的可視化工具。
從Java 5開始 引入了 JConsole,JConsole 是一個內(nèi)置 Java 性能分析器。您可以輕松地使用 JConsole(或者,它更高端的 “近親” jvisualvm )來監(jiān)控 Java 應(yīng)用程序性能和跟蹤 Java 中的代碼。(推薦使用升級版 JConsole 即 jvisualvm 。)
控制臺啟動或者直接雙擊可執(zhí)行程序。
如下圖所示(這里就不具體介紹某一點了):
我們再來看看jvisualvm
歡迎關(guān)注我的微信公眾號:"Java面試通關(guān)手冊"(一個有溫度的微信公眾號,期待與你共同進步~~~堅持原創(chuàng),分享美文,分享各種Java學(xué)習(xí)資源):
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/69344.html
摘要:目錄往期博客課堂篇初識常量池簡單理解字符串常量池靜態(tài)常量池大整型常量池為什么要了解垃圾收集和內(nèi)存分配如何判斷對象已死引用計數(shù)算法可達性分析算法之后引用的擴充回收方法區(qū)垃圾收集算法分代收集理論標記清除標記復(fù)制標記整理對象分 ...
摘要:今天開始實戰(zhàn)虛擬機之二虛擬機的工作模式。總計有個系列實戰(zhàn)虛擬機之一堆溢出處理實戰(zhàn)虛擬機之二虛擬機的工作模式實戰(zhàn)虛擬機之三的新生代實戰(zhàn)虛擬機之四禁用實戰(zhàn)虛擬機之五開啟編譯目前的虛擬機支持和兩種運行模式。 今天開始實戰(zhàn)Java虛擬機之二:虛擬機的工作模式。 總計有5個系列實戰(zhàn)Java虛擬機之一堆溢出處理實戰(zhàn)Java虛擬機之二虛擬機的工作模式實戰(zhàn)Java虛擬機之三G1的新生代GC實戰(zhàn)Jav...
摘要:深入理解虛擬機高級特性與最佳實踐第二版讀書筆記與常見面試題總結(jié)上篇文章傳送門深入理解虛擬機之內(nèi)存區(qū)域本節(jié)常見面試題推薦帶著問題閱讀,問題答案在文中都有提到如何判斷對象是否死亡兩種方法。虛引用主要用來跟蹤對象被垃圾回收的活動。 《深入理解Java虛擬機:JVM高級特性與最佳實踐(第二版》讀書筆記與常見面試題總結(jié) 上篇文章傳送門: 深入理解虛擬機之Java內(nèi)存區(qū)域 本節(jié)常見面試題(推薦帶著...
摘要:運行時數(shù)據(jù)區(qū)域虛擬機在執(zhí)行程序的過程中會把它管理的內(nèi)存劃分成若干個不同的數(shù)據(jù)區(qū)域。堆虛擬機所管理的內(nèi)存中最大的一塊,堆是所有線程共享的一塊內(nèi)存區(qū)域,在虛擬機啟動時創(chuàng)建。 《深入理解Java虛擬機:JVM高級特性與最佳實踐(第二版》讀書筆記 1 概述 對于Java程序員來說,在虛擬機自動內(nèi)存管理機制下,不再需要像C/C++程序開發(fā)程序員這樣為內(nèi)一個new 操作去寫對應(yīng)的delete/...
摘要:深入理解虛擬機高級特性與最佳實踐第二版讀書筆記與常見面試題總結(jié)本節(jié)常見面試題介紹下內(nèi)存區(qū)域運行時數(shù)據(jù)區(qū)。運行時數(shù)據(jù)區(qū)域虛擬機在執(zhí)行程序的過程中會把它管理的內(nèi)存劃分成若干個不同的數(shù)據(jù)區(qū)域。 《深入理解Java虛擬機:JVM高級特性與最佳實踐(第二版》讀書筆記與常見面試題總結(jié) 本節(jié)常見面試題: 介紹下Java內(nèi)存區(qū)域(運行時數(shù)據(jù)區(qū))。 對象的訪問定位的兩種方式。 1 概述 對于Java...
閱讀 2787·2021-11-17 09:33
閱讀 2169·2021-09-03 10:40
閱讀 522·2019-08-29 18:45
閱讀 2956·2019-08-29 16:21
閱讀 613·2019-08-29 11:11
閱讀 3394·2019-08-26 12:00
閱讀 2947·2019-08-23 18:19
閱讀 1094·2019-08-23 12:18