最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JDK14性能管理工具之Jconsole的使用詳解

 更新時(shí)間:2020年05月12日 09:27:38   作者:flydean  
JConsole是JDK自帶的管理工具,在JAVA_HOME/bin下面,直接命令JConsole即可開啟JConsole。接下來通過本文給大家分享JDK14性能管理工具之Jconsole的使用,感興趣的朋友一起看看吧

我們在開發(fā)java項(xiàng)目的時(shí)候,或多或少都會去用到Java的性能管理工具。有時(shí)候是為了提升應(yīng)用程序的性能,有時(shí)候是為了查找java應(yīng)用程序的bug。

性能監(jiān)控和調(diào)試工具在英文中叫做profile tool,提起這種工具大家可能會想到一些非常出名的jprofile等收費(fèi)工具,其實(shí)JDK也自帶了一些性能調(diào)試工具,比如JMC和Jconsole。

JMC現(xiàn)在已經(jīng)和JDK的版本獨(dú)立出來了,詳情請參考我之前的文章: JDK 14的新特性:JFR,JMC和JFR事件流 ,今天我們將會重點(diǎn)講解Jconsole的使用。

JConsole

JConsole是JDK自帶的管理工具,在JAVA_HOME/bin下面,直接命令JConsole即可開啟JConsole。

JConsole有兩種連接方式,一種是連接本地的進(jìn)程,一種是連接遠(yuǎn)程的程序。

本地連接是不需要密碼的,直接選擇相應(yīng)的JVM程序即可。本地連接有一個(gè)前提,就是JConsole的用戶一定要和java程序的用戶是相同的,否則無法操作JVM。

遠(yuǎn)程連接是通過JMX協(xié)議進(jìn)行的,JMX的全稱是Java Management Extention,現(xiàn)在大家做web可能對這個(gè)協(xié)議不太清楚,如果是做客戶端程序,接觸的應(yīng)該會多一些。簡單點(diǎn)講,JMX是用來做遠(yuǎn)程管理的。程序把要管理的Bean暴露出去,然后通過JMX協(xié)議連接進(jìn)行操作。

好了,我們連上一個(gè)自己寫的程序試一下。

JConsole分為六大部分,概覽,內(nèi)存,線程,類,VM和MBean。

先看一下概覽:

概覽展示了堆內(nèi)存使用量,線程,類和CPU占用率這四大內(nèi)容。

我們這個(gè)程序是使用JDK14來啟動的,我們看下它的內(nèi)存情況:

從上圖中,我們可以看到使用JConsole可以監(jiān)控堆內(nèi)存,非堆內(nèi)存的一些情況,更進(jìn)一步,還可以監(jiān)控內(nèi)存池中的一些項(xiàng)目的使用情況。

G1垃圾回收器中的Eden,Old和Survivor space大家應(yīng)該都很熟悉了。

Young Gen被劃分為1個(gè)Eden Space和2個(gè)Suvivor Space。當(dāng)對象剛剛被創(chuàng)建的時(shí)候,是放在Eden space。垃圾回收的時(shí)候,會掃描Eden Space和一個(gè)Suvivor Space。如果在垃圾回收的時(shí)候發(fā)現(xiàn)Eden Space中的對象任然有效,則會將其復(fù)制到另外一個(gè)Suvivor Space。

就這樣不斷的掃描,最后經(jīng)過多次掃描發(fā)現(xiàn)任然有效的對象會被放入Old Gen表示其生命周期比較長,可以減少垃圾回收時(shí)間。

在JDK8之前,類定義、字節(jié)碼和常量等很少會變更的信息是放在持久代Perm Gen中的。不過在JDK8之后,Perm Gen已經(jīng)被取消了,現(xiàn)在叫做Metaspace。Metaspace并不在java虛擬機(jī)中,它使用的是本地內(nèi)存。Metaspace可以通過-XX:MaxMetaspaceSize來控制。

Code Cache是JVM用來存儲native code的,因?yàn)槭怯肏eap的形式來存儲的,所以叫Code Heap。Code Heap被分為三個(gè)部分,Non-method,Profiled和Non-profiled。

Non-method部分包含的是非方法的code,比如說編譯器緩沖區(qū)和字節(jié)碼解釋器。這些代碼是永久保存在代碼緩存區(qū)中的。代碼堆的大小是固定的。Non-method使用-XX:NonMethodCodeHeapSize來控制。

Profiled部分表示存的是生命周期比較短的稍微優(yōu)化的profiled methods。Profiled使用–XX:ProfiledCodeHeapSize來控制。

Non-profiled存放的是優(yōu)化過的,non-profiled方法,并且他們的生命周期會比較長。Non-profiled用-XX:NonProfiledCodeHeapSize來控制。

最后還有一個(gè)Compressed Class Space,它是和-XX:+UseCompressedOops,-XX:+UseCompressedClassesPointers有關(guān)的。實(shí)際上是一個(gè)指針的壓縮,可以使用32bits來表示之前64bits的指針。

線程列出了程序目前正在運(yùn)行的線程,如果點(diǎn)擊具體的線程信息還可以看到線程中的堆棧跟蹤和線程狀態(tài)統(tǒng)計(jì),非常有用。

類很簡單,顯示了加載的類的個(gè)數(shù)。

VM信息展示了虛擬機(jī)相關(guān)的一些參數(shù)。

最后,MBean暴露了JVM中的一些Bean,我們可以查看這些bean的信息或者調(diào)用Bean中的方法。

以我們之前講過的JFR為例,我們可以調(diào)用JFR的startRecording,stopRecording等方法。

JConsole是一個(gè)比較簡單但是也很實(shí)用的profile工具,希望大家能夠在編寫代碼之余,多多考慮代碼的性能和效率。

總結(jié)

到此這篇關(guān)于JDK14性能管理工具之Jconsole詳解的文章就介紹到這了,更多相關(guān)JDK14性能管理工具內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Spring?Service功能作用詳細(xì)講解

    Spring?Service功能作用詳細(xì)講解

    service層測試較簡單,目前大多數(shù)測試主要是針對public方法進(jìn)行的。依據(jù)測試方法劃分,可以分為兩種:基于mock的隔離測試和基于dbunit的普通測試
    2022-12-12
  • springboot自動裝配的源碼與流程圖

    springboot自動裝配的源碼與流程圖

    在日常的開發(fā)過程中Spring Boot自動裝配的特性給我們開發(fā)減少了很多重復(fù)性的工作,這篇文章主要給大家介紹了關(guān)于springboot自動裝配的相關(guān)資料,需要的朋友可以參考下
    2021-08-08
  • 在Struts2中如何將父類屬性序列化為JSON格式的解決方法

    在Struts2中如何將父類屬性序列化為JSON格式的解決方法

    本篇文章,小編將為大家介紹關(guān)于在Struts2中如何將父類屬性序列化為JSON格式的解決方法,有需要的朋友可以參考一下
    2013-04-04
  • 如何在SpringBoot中使用logback優(yōu)化異常堆棧的輸出詳解

    如何在SpringBoot中使用logback優(yōu)化異常堆棧的輸出詳解

    最近項(xiàng)目中整合了logback,所以下面這篇文章主要給大家介紹了關(guān)于如何在SpringBoot中使用logback優(yōu)化異常堆棧的輸出,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-05-05
  • Java導(dǎo)入、導(dǎo)出excel用法步驟保姆級教程(附封裝好的工具類)

    Java導(dǎo)入、導(dǎo)出excel用法步驟保姆級教程(附封裝好的工具類)

    這篇文章主要介紹了Java導(dǎo)入、導(dǎo)出excel的相關(guān)資料,講解了使用Java和ApachePOI庫將數(shù)據(jù)導(dǎo)出為Excel文件,包括創(chuàng)建工作簿、工作表、行和單元格,設(shè)置樣式和字體,合并單元格,添加公式和下拉選擇等功能,需要的朋友可以參考下
    2025-03-03
  • MyBatisPlus條件構(gòu)造器圖文實(shí)例詳解

    MyBatisPlus條件構(gòu)造器圖文實(shí)例詳解

    這篇文章主要介紹了MyBatisPlus條件構(gòu)造器,了解內(nèi)部原理是為了幫助我們做擴(kuò)展,同時(shí)也是驗(yàn)證了一個(gè)人的學(xué)習(xí)能力,如果你想讓自己的職業(yè)道路更上一層樓,這些底層的東西你是必須要會的
    2023-01-01
  • 在Java編程中使用正則表達(dá)式

    在Java編程中使用正則表達(dá)式

    這篇文章主要介紹了在Java編程中使用正則表達(dá)式,注意使用matches()方法檢測一下Java對正則表達(dá)式的支持情況,需要的朋友可以參考下
    2015-08-08
  • springboot項(xiàng)目開啟https協(xié)議的項(xiàng)目實(shí)現(xiàn)

    springboot項(xiàng)目開啟https協(xié)議的項(xiàng)目實(shí)現(xiàn)

    本文主要介紹了springboot項(xiàng)目開啟https協(xié)議的項(xiàng)目實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • 利用IDEA社區(qū)版創(chuàng)建SpringBoot項(xiàng)目的詳細(xì)圖文教程

    利用IDEA社區(qū)版創(chuàng)建SpringBoot項(xiàng)目的詳細(xì)圖文教程

    大家應(yīng)該都知道Idea社區(qū)版本,默認(rèn)是不能創(chuàng)建SpringBoot項(xiàng)目的,下面這篇文章主要給大家介紹了關(guān)于利用IDEA社區(qū)版創(chuàng)建SpringBoot項(xiàng)目的詳細(xì)圖文教程,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-04-04
  • Java 中的控制反轉(zhuǎn)(IOC)詳解

    Java 中的控制反轉(zhuǎn)(IOC)詳解

    這篇文章主要介紹了理解Java 中的IOC控制反轉(zhuǎn),具有一定參考價(jià)值,需要的朋友可以了解下,希望能夠給你帶來幫助
    2021-10-10

最新評論

三明市| 天祝| 泰和县| 惠东县| 类乌齐县| 红河县| 拜城县| 泊头市| 峡江县| 奉新县| 淮安市| 宿迁市| 桦南县| 屯门区| 大方县| 钟祥市| 连云港市| 甘孜| 九龙城区| 株洲县| 定边县| 合阳县| 定陶县| 屯留县| 潼关县| 饶河县| 岐山县| 灌南县| 德兴市| 新源县| 石城县| 彭水| 浮山县| 水富县| 民和| 建昌县| 阳城县| 江西省| 金乡县| 随州市| 南岸区|