亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

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

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

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

JConsole

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

JConsole有兩種連接方式,一種是連接本地的進程,一種是連接遠程的程序。

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

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

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

JConsole分為六大部分,概覽,內存,線程,類,VM和MBean。

先看一下概覽:

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

我們這個程序是使用JDK14來啟動的,我們看下它的內存情況:

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

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

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

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

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

Code Cache是JVM用來存儲native code的,因為是用Heap的形式來存儲的,所以叫Code Heap。Code Heap被分為三個部分,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來控制。

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

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

類很簡單,顯示了加載的類的個數。

VM信息展示了虛擬機相關的一些參數。

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

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

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

總結

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

相關文章

  • 解析ConcurrentHashMap:成員屬性、內部類、構造方法

    解析ConcurrentHashMap:成員屬性、內部類、構造方法

    ConcurrentHashMap是由Segment數組結構和HashEntry數組結構組成。Segment的結構和HashMap類似,是一種數組和鏈表結構,今天給大家普及java面試常見問題---ConcurrentHashMap知識,一起看看吧
    2021-06-06
  • SpringBoot 使用hibernate validator校驗

    SpringBoot 使用hibernate validator校驗

    這篇文章主要介紹了SpringBoot 使用hibernate validator校驗,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-11-11
  • mybatis?實現字段大小寫賦值

    mybatis?實現字段大小寫賦值

    這篇文章主要介紹了mybatis?實現字段大小寫賦值,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • 解決mybatis中order by排序無效問題

    解決mybatis中order by排序無效問題

    這篇文章主要介紹了解決mybatis中order by排序無效問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • ssm項目實現用戶登陸持久化(token)

    ssm項目實現用戶登陸持久化(token)

    這篇文章主要介紹了ssm項目實現用戶登陸持久化(token),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-04-04
  • Java8 stream 中利用 groupingBy 進行多字段分組求和案例

    Java8 stream 中利用 groupingBy 進行多字段分組求和案例

    這篇文章主要介紹了Java8 stream 中利用 groupingBy 進行多字段分組求和案例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • SpringBoot 自定義注解異步記錄復雜日志詳解

    SpringBoot 自定義注解異步記錄復雜日志詳解

    這篇文章主要為大家介紹了SpringBoot 自定義注解異步記錄復雜日志詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-09-09
  • mybatis中的動態(tài)sql問題

    mybatis中的動態(tài)sql問題

    這篇文章主要介紹了mybatis中的動態(tài)sql問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • SpringCloud?OpenFeign?服務調用傳遞?token的場景分析

    SpringCloud?OpenFeign?服務調用傳遞?token的場景分析

    這篇文章主要介紹了SpringCloud?OpenFeign?服務調用傳遞?token的場景分析,本篇文章簡單介紹?OpenFeign?調用傳遞?header?,以及多線程環(huán)境下可能會出現的問題,其中涉及到?ThreadLocal?的相關知識,需要的朋友可以參考下
    2022-07-07
  • Spring Boot集成Redis實戰(zhàn)操作功能

    Spring Boot集成Redis實戰(zhàn)操作功能

    這篇文章主要介紹了Spring Boot集成Redis實戰(zhàn)操作,包括如何集成redis以及redis的一些優(yōu)點,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-11-11

最新評論