日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

jvm系列(七):jvm调优-工具篇

發(fā)布時(shí)間:2025/3/21 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 jvm系列(七):jvm调优-工具篇 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

16年的時(shí)候花了一些時(shí)間整理了一些關(guān)于jvm的介紹文章,到現(xiàn)在回顧起來(lái)還是一些還沒(méi)有補(bǔ)充全面,其中就包括如何利用工具來(lái)監(jiān)控調(diào)優(yōu)前后的性能變化。工具做為圖形化界面來(lái)展示更能直觀的發(fā)現(xiàn)問(wèn)題,另一方面一些耗費(fèi)性能的分析(dump文件分析)一般也不會(huì)在生產(chǎn)直接分析,往往dump下來(lái)的文件達(dá)1G左右,人工分析效率較低,因此利用工具來(lái)分析jvm相關(guān)問(wèn)題,長(zhǎng)長(zhǎng)可以到達(dá)事半功倍的效果來(lái)。

jvm監(jiān)控分析工具一般分為兩類,一種是jdk自帶的工具,一種是第三方的分析工具。jdk自帶工具一般在jdk bin目錄下面,以exe的形式直接點(diǎn)擊就可以使用,其中包含分析工具已經(jīng)很強(qiáng)大,幾乎涉及了方方面面,但是我們最常使用的只有兩款:jconsole.exe和jvisualvm.exe;第三方的分析工具有很多,各自的側(cè)重點(diǎn)不同,比較有代表性的:MAT(Memory Analyzer Tool)、GChisto等。

對(duì)于大型?Java?應(yīng)用程序來(lái)說(shuō),再精細(xì)的測(cè)試也難以堵住所有的漏洞,即便我們?cè)跍y(cè)試階段進(jìn)行了大量卓有成效的工作,很多問(wèn)題還是會(huì)在生產(chǎn)環(huán)境下暴露出來(lái),并且很難在測(cè)試環(huán)境中進(jìn)行重現(xiàn)。JVM 能夠記錄下問(wèn)題發(fā)生時(shí)系統(tǒng)的部分運(yùn)行狀態(tài),并將其存儲(chǔ)在堆轉(zhuǎn)儲(chǔ) (Heap Dump) 文件中,從而為我們分析和診斷問(wèn)題提供了重要的依據(jù)。其中VisualVM和MAT是dump文件的分析利器。


jdk自帶的工具


jconsole

Jconsole(Java?Monitoring and Management Console)是從java5開(kāi)始,在JDK中自帶的java監(jiān)控和管理控制臺(tái),用于對(duì)JVM中內(nèi)存,線程和類等的監(jiān)控,是一個(gè)基于JMX(java management extensions)的GUI性能監(jiān)測(cè)工具。jconsole使用jvm的擴(kuò)展機(jī)制獲取并展示虛擬機(jī)中運(yùn)行的應(yīng)用程序的性能和資源消耗等信息。

直接在jdk/bin目錄下點(diǎn)擊jconsole.exe即可啟動(dòng),界面如下:

在彈出的框中可以選擇本機(jī)的監(jiān)控本機(jī)的java應(yīng)用,也可以選擇遠(yuǎn)程的java服務(wù)來(lái)監(jiān)控,如果監(jiān)控遠(yuǎn)程服務(wù)需要在tomcat啟動(dòng)腳本中添加如下代碼:

-Dcom.sun.management.jmxremote.port=6969 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3

連接進(jìn)去之后,就可以看到j(luò)console概覽圖和主要的功能:概述、內(nèi)存、線程、類、VM、MBeans

  • 概述,以圖表的方式顯示出堆內(nèi)存使用量,活動(dòng)線程數(shù),已加載的類,CUP占用率的折線圖,可以非常清晰的觀察在程序執(zhí)行過(guò)程中的變動(dòng)情況。

  • 內(nèi)存,主要展示了內(nèi)存的使用情況,同時(shí)可以查看堆和非堆內(nèi)存的變化值對(duì)比,也可以點(diǎn)擊執(zhí)行GC來(lái)處罰GC的執(zhí)行

  • 線程,主界面展示線程數(shù)的活動(dòng)數(shù)和峰值,同時(shí)點(diǎn)擊左下方線程可以查看線程的詳細(xì)信息,比如線程的狀態(tài)是什么,堆棧內(nèi)容等,同時(shí)也可以點(diǎn)擊“檢測(cè)死鎖”來(lái)檢查線程之間是否有死鎖的情況。

  • 類,主要展示已加載類的相關(guān)信息。
  • VM 概要,展示JVM所有信息總覽,包括基本信息、線程相關(guān)、堆相關(guān)、操作系統(tǒng)、VM參數(shù)等。
  • Mbean,查看Mbean的屬性,方法等。

VisualVM

簡(jiǎn)介

VisualVM 是一個(gè)工具,它提供了一個(gè)可視界面,用于查看 Java 虛擬機(jī) (Java Virtual Machine, JVM) 上運(yùn)行的基于 Java 技術(shù)的應(yīng)用程序(Java 應(yīng)用程序)的詳細(xì)信息。VisualVM 對(duì) Java Development Kit (JDK) 工具所檢索的 JVM 軟件相關(guān)數(shù)據(jù)進(jìn)行組織,并通過(guò)一種使您可以快速查看有關(guān)多個(gè) Java 應(yīng)用程序的數(shù)據(jù)的方式提供該信息。您可以查看本地應(yīng)用程序以及遠(yuǎn)程主機(jī)上運(yùn)行的應(yīng)用程序的相關(guān)數(shù)據(jù)。此外,還可以捕獲有關(guān) JVM 軟件實(shí)例的數(shù)據(jù),并將該數(shù)據(jù)保存到本地系統(tǒng),以供后期查看或與其他用戶共享。

VisualVM 是javajdk自帶的最牛逼的調(diào)優(yōu)工具了吧,也是我平時(shí)使用最多調(diào)優(yōu)工具,幾乎涉及了jvm調(diào)優(yōu)的方方面面。同樣是在jdk/bin目錄下面雙擊jvisualvm.exe既可使用,啟動(dòng)起來(lái)后和jconsole 一樣同樣可以選擇本地和遠(yuǎn)程,如果需要監(jiān)控遠(yuǎn)程同樣需要配置相關(guān)參數(shù),主界面如下;

VisualVM可以根據(jù)需要安裝不同的插件,每個(gè)插件的關(guān)注點(diǎn)都不同,有的主要監(jiān)控GC,有的主要監(jiān)控內(nèi)存,有的監(jiān)控線程等。

如何安裝:

1、從主菜單中選擇“工具”>“插件”。?
2、在“可用插件”標(biāo)簽中,選中該插件的“安裝”復(fù)選框。單擊“安裝”。?
3、逐步完成插件安裝程序。

我這里以 Eclipse(pid 22296)為例,雙擊后直接展開(kāi),主界面展示了系統(tǒng)和jvm兩大塊內(nèi)容,點(diǎn)擊右下方j(luò)vm參數(shù)和系統(tǒng)屬性可以參考詳細(xì)的參數(shù)信息.

因?yàn)閂isualVM的插件太多,我這里主要介紹三個(gè)我主要使用幾個(gè):監(jiān)控、線程、Visual GC

監(jiān)控的主頁(yè)其實(shí)也就是,cpu、內(nèi)存、類、線程的圖表

線程和jconsole功能沒(méi)有太大的區(qū)別

Visual GC 是常常使用的一個(gè)功能,可以明顯的看到年輕代、老年代的內(nèi)存變化,以及gc頻率、gc的時(shí)間等。

以上的功能其實(shí)jconsole幾乎也有,VisualVM更全面更直觀一些,另外VisualVM非常多的其它功能,可以分析dump的內(nèi)存快照,dump出來(lái)的線程快照并且進(jìn)行分析等,還有其它很多的插件大家可以去探索

第三方調(diào)優(yōu)工具

MAT

MAT是什么?

MAT(Memory Analyzer Tool),一個(gè)基于Eclipse的內(nèi)存分析工具,是一個(gè)快速、功能豐富的Java heap分析工具,它可以幫助我們查找內(nèi)存泄漏和減少內(nèi)存消耗。使用內(nèi)存分析工具從眾多的對(duì)象中進(jìn)行分析,快速的計(jì)算出在內(nèi)存中對(duì)象的占用大小,看看是誰(shuí)阻止了垃圾收集器的回收工作,并可以通過(guò)報(bào)表直觀的查看到可能造成這種結(jié)果的對(duì)象。

通常內(nèi)存泄露分析被認(rèn)為是一件很有難度的工作,一般由團(tuán)隊(duì)中的資深人士進(jìn)行。不過(guò)要介紹的 MAT(Eclipse Memory Analyzer)被認(rèn)為是一個(gè)“傻瓜式“的堆轉(zhuǎn)儲(chǔ)文件分析工具,你只需要輕輕點(diǎn)擊一下鼠標(biāo)就可以生成一個(gè)專業(yè)的分析報(bào)告。和其他內(nèi)存泄露分析工具相比,MAT 的使用非常容易,基本可以實(shí)現(xiàn)一鍵到位,即使是新手也能夠很快上手使用。

MAT以eclipse 插件的形式來(lái)安裝,具體的安裝過(guò)程就不在描述了,可以利用visualvm或者是 jmap命令生產(chǎn)堆文件,導(dǎo)入eclipse mat中生成分析報(bào)告:

生產(chǎn)這會(huì)報(bào)表的同時(shí)也會(huì)在dump文件的同級(jí)目錄下生成三份(dump_Top_Consumers.zip、dump_Leak_Suspects.zip、dump_Top_Components.zip)分析結(jié)果的html文件,方便發(fā)送給相關(guān)同事來(lái)查看。

需要關(guān)注的是下面的Actions、Reports、Step by Step區(qū)域:

  • Histogram:列出內(nèi)存中的對(duì)象,對(duì)象的個(gè)數(shù)以及大小,支持正則表達(dá)式查找,也可以計(jì)算出該類所有對(duì)象的retained size

  • Dominator Tree:列出最大的對(duì)象以及其依賴存活的Object (大小是以Retained Heap為標(biāo)準(zhǔn)排序的)

  • Top Consumers : 通過(guò)圖形列出最大的object

  • duplicate classes :檢測(cè)由多個(gè)類裝載器加載的類

  • Leak Suspects :內(nèi)存泄漏分析

  • Top Components: 列出大于總堆數(shù)的百分之1的報(bào)表。

  • Component Report:分析對(duì)象屬于同一個(gè)包或者被同一個(gè)類加載器加載

以上只是一個(gè)初級(jí)的介紹,mat還有更強(qiáng)大的使用,比如對(duì)比堆內(nèi)存,在生產(chǎn)環(huán)境中往往為了定位問(wèn)題,每隔幾分鐘dump出一下內(nèi)存快照,隨后在對(duì)比不同時(shí)間的堆內(nèi)存的變化來(lái)發(fā)現(xiàn)問(wèn)題。

GChisto

GChisto是一款專業(yè)分析gc日志的工具,可以通過(guò)gc日志來(lái)分析:Minor GC、full gc的時(shí)間、頻率等等,通過(guò)列表、報(bào)表、圖表等不同的形式來(lái)反應(yīng)gc的情況。雖然界面略顯粗糙,但是功能還是不錯(cuò)的。

配置好本地的jdk環(huán)境之后,雙擊GChisto.jar,在彈出的輸入框中點(diǎn)擊 add 選擇gc.log日志

  • GC Pause Stats:可以查看GC 的次數(shù)、GC的時(shí)間、GC的開(kāi)銷、最大GC時(shí)間和最小GC時(shí)間等,以及相應(yīng)的柱狀圖

  • GC Pause Distribution:查看GC停頓的詳細(xì)分布,x軸表示垃圾收集停頓時(shí)間,y軸表示是停頓次數(shù)。

  • GC Timeline:顯示整個(gè)時(shí)間線上的垃圾收集

不過(guò)這款工具已經(jīng)不再維護(hù),不能識(shí)別最新jdk的日志文件。

gcviewer

GCViewer也是一款分析小工具,用于可視化查看由Sun /?Oracle, IBM, HP 和 BEA Java 虛擬機(jī)產(chǎn)生的垃圾收集器的日志,gcviewer個(gè)人感覺(jué)顯示 的界面比較亂沒(méi)有GChisto更專業(yè)一些。

以上的兩款gc分析日志,一個(gè)不太維護(hù)了,一個(gè)不太專業(yè),求推薦更好的gc分析工具

前期jvm系類文章回顧:

  • jvm系列(一):java類的加載機(jī)制
  • jvm系列(二):JVM內(nèi)存結(jié)構(gòu)
  • jvm系列(三):GC算法 垃圾收集器
  • jvm系列(四):jvm調(diào)優(yōu)-命令篇
  • jvm系列(五):tomcat性能調(diào)優(yōu)和性能監(jiān)控(visualvm)
  • jvm系列(六):jvm調(diào)優(yōu)-從eclipse開(kāi)始

作者:純潔的微笑?
出處:http://www.ityouknow.com/?


from:?http://blog.csdn.net/ityouknow/article/details/56844837

總結(jié)

以上是生活随笔為你收集整理的jvm系列(七):jvm调优-工具篇的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 麻豆福利影院 | 视频这里只有精品 | 蜜臀av性久久久久av蜜臀妖精 | 国精产品一区二区 | 成人激情站 | 探花国产精品一区二区 | 超碰国产一区二区三区 | 老司机成人在线 | 日批网址| 一区二区视频在线播放 | 国产又粗又猛又大爽 | 制服丝袜中文字幕在线 | 国产日韩欧美精品 | 久久黄色一级视频 | 国产三级播放 | 日本高清黄色 | 国模少妇一区二区 | 好色先生视频污 | 蜜臀在线视频 | 国产人人看 | 中文字幕在线免费观看 | 亚洲午夜无码av毛片久久 | 精品福利视频一区二区 | 亚洲爽爽 | 亚洲色成人www永久在线观看 | 欧美国产成人精品一区二区三区 | 深爱五月网 | 涩涩成人| 成年人免费视频播放 | 午夜精品无码一区二区三区 | 亚洲九九爱 | 久久爱综合 | 在线视频 一区二区 | 91精品国产91久久久久久久久久久久 | 激情视频一区 | 国产视频一区在线 | 超薄肉色丝袜一区二区 | 久久99热这里只有精品 | 国产伦精品一区二区三区免费迷 | wwww黄色片| 91精品国产一区二区三区 | 国产人妖ts重口系列网站观看 | av操操操 | 久久婷婷网 | 芒果视频污污 | 国产aaaaa毛片 | 特级西西人体444www高清 | 色综合av综合无码综合网站 | 中文在线a∨在线 | 亚洲成人一级 | 乳色吐息在线观看 | 91网入口| 日韩在线观看视频一区二区三区 | 男女无套免费视频网站动漫 | 欧美亚洲综合久久 | 成人视频在线观看 | 国产精品久久久久久精 | 欧美成人黄色网 | av福利站| 综合av网| 亚洲精品视频导航 | 国产美女又黄又爽又色视频免费 | 东凛在线观看 | 国产精品久久久久久久毛片 | 中国av一级片 | 好吊色网站 | 日韩最新视频 | 欧美11一13sex性hd | jizz国产在线观看 | 久久中文免费视频 | 国产亚洲一区二区三区在线观看 | 好吊妞在线 | 欧美色图网址 | www.com黄色 | 欧美激情黑人 | 91在线| 狠狠激情 | 欧美精品乱码久久久久久按摩 | 东北女人啪啪ⅹxx对白 | 精品久久久久久久久中文字幕 | 欧美成人片在线观看 | 久久久久久久久久影院 | 欧美 丝袜 自拍 制服 另类 | 天堂网2020 | 亚洲性图第一页 | 黄色网炮 | 国产免费久久久 | 欧美三级在线看 | 亚洲大胆 | 国精产品一区一区三区有限公司杨 | 免费网站在线观看黄色 | 日本久久精品 | 亚洲毛片一区二区 | 国产视频精品免费 | 亚洲伦理精品 | 丝袜诱惑一区二区 | 下面一进一出好爽视频 | 日韩视频在线观看视频 | 免费av小说|