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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

JVM之VisualVM工具的使用以及GC

發(fā)布時(shí)間:2023/12/13 综合教程 39 生活家
生活随笔 收集整理的這篇文章主要介紹了 JVM之VisualVM工具的使用以及GC 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

簡介:

  VisualVM,能夠監(jiān)控線程,內(nèi)存情況,查看方法的CPU時(shí)間和內(nèi)存中的對(duì) 象,已被GC的對(duì)象,

  反向查看分配的堆棧(如100個(gè)String對(duì)象分別由哪幾個(gè)對(duì)象分配出來的)。

  VisualVM使用簡單,幾乎0配置,功能還是比較豐富的,幾乎囊括了其它JDK自帶命令的所有功能

    內(nèi)存信息

    線程信息

    Dump堆(本地進(jìn)程)

    Dump線程(本地進(jìn)程)

    打開堆Dump。堆Dump可以用jmap來生成。

    打開線程Dump

    生成應(yīng)用快照(包含內(nèi)存信息、線程信息等等)

    性能分析。CPU分析(各個(gè)方法調(diào)用時(shí)間,檢查哪些方法耗時(shí)多),內(nèi)存分析(各類對(duì)象占用的內(nèi)存,檢查哪些類占用內(nèi)存多

如何獲取VisualVM:

  VisualVM?的一個(gè)最大好處就是,它已經(jīng)在你的?JDK?bin?目錄里了,只要你使用的是?JDK1.6?Update7?之后的版本。點(diǎn)擊一下?jvisualvm.exe?圖標(biāo)它就可以運(yùn)行了

查看本地進(jìn)程

查看CPU、內(nèi)存、類、線程運(yùn)行信息

查看線程詳情

也可以點(diǎn)擊右上角Dump按鈕,將線程的信息導(dǎo)出,其實(shí)就是執(zhí)行的jstack命令

抽樣器可以對(duì)CPU、內(nèi)存在一段時(shí)間內(nèi)進(jìn)行抽樣,以供分析

cpu抽樣

VM工具遠(yuǎn)程連接

  VisualJVM不僅是可以監(jiān)控本地jvm進(jìn)程,還可以監(jiān)控遠(yuǎn)程的jvm進(jìn)程,需要借助于JMX技術(shù)實(shí)現(xiàn)。

什么是JMX?

  JMX(Java Management Extensions,即Java管理擴(kuò)展)是一個(gè)為應(yīng)用程序、設(shè)備、系統(tǒng)等植入管理功能的框架。

  JMX可以跨越一系列異構(gòu)操作系統(tǒng)平臺(tái)、系統(tǒng)體系結(jié)構(gòu)和網(wǎng)絡(luò)傳輸協(xié)議,靈活的開發(fā)無縫集成的系統(tǒng)、網(wǎng)絡(luò)和服務(wù)管理應(yīng)用。

監(jiān)控遠(yuǎn)程的Tomcat

  想要監(jiān)控遠(yuǎn)程的tomcat,就需要在遠(yuǎn)程的tomcat進(jìn)行對(duì)JMX配置,方法如下:

  注意:要將該的配置放在catalina.sh的上面,否則將無法創(chuàng)建JMX連接

  JAVA_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=6666 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"

  Tomcat解壓目錄的bin目錄中的catalina.sh文件,加入如上配置隨便找個(gè)位置就行

添加成功后監(jiān)測遠(yuǎn)程JVM

GC專題

1.什么是垃圾回收

  程序運(yùn)行會(huì)產(chǎn)生各種各種的數(shù)據(jù),那么這些數(shù)據(jù)存在于內(nèi)存當(dāng)中,這些數(shù)據(jù)不可能是永久存在的,無效的資源對(duì)象需要進(jìn)行垃圾回收,釋放內(nèi)存

2.不同的編程語言都有GC垃圾回收

  java語言自帶GC垃圾回收器,并且有JVM自動(dòng)進(jìn)行垃圾回收,程序員主要關(guān)注代碼實(shí)現(xiàn),不關(guān)注垃圾回收 System.gc();C/C++語言當(dāng)中,程序員new一個(gè)對(duì)象,相當(dāng)于申請(qǐng)了一塊內(nèi)存,如果需要釋放資源得手動(dòng)通過delete關(guān)鍵字進(jìn)行內(nèi)存的釋放

3.垃圾回收算法

  如果使用的算法不合理,反倒會(huì)造成資源的浪費(fèi),垃圾回收常見算法

3.1 引用計(jì)數(shù)法

  原理:假如有一個(gè)對(duì)象A,任何對(duì)象對(duì)A對(duì)象的引用,計(jì)數(shù)器就+1,當(dāng)引用失效或者失敗時(shí)計(jì)數(shù)器-1,如果對(duì)象A的計(jì)數(shù)器為0,GC就會(huì)當(dāng)成對(duì)象沒有引用了,就會(huì)將該對(duì)象回收

3.2 標(biāo)記清除法

  標(biāo)記:從根節(jié)點(diǎn)開始標(biāo)記引用對(duì)象
  清除:未被標(biāo)記的對(duì)象就是垃圾對(duì)象,可以清除

  原理:初始狀態(tài)下所有對(duì)象的標(biāo)記都為0,當(dāng)內(nèi)存不足的情況下,
  標(biāo)記階段:GC先會(huì)進(jìn)行標(biāo)記階段,從根節(jié)點(diǎn)開始,凡是引用的對(duì)象都標(biāo)記為1,其他沒有引用的對(duì)象標(biāo)記為0
  清除階段:凡是對(duì)象標(biāo)記為1代表該對(duì)象存在引用不清除,對(duì)象標(biāo)記為0則清除,清除完畢之后所有對(duì)象重新標(biāo)記為0

缺點(diǎn):

  1.效率較低,標(biāo)記和清除兩個(gè)動(dòng)作都需要遍歷所有的對(duì)象,并且在GC時(shí),需要停止應(yīng) 用程序,對(duì)于交互性要求比較高的應(yīng)用而言這個(gè)體驗(yàn)是非常差的。
  2.碎片化較為嚴(yán)重,可能導(dǎo)致大數(shù)據(jù)沒有辦法存儲(chǔ),小數(shù)據(jù)存儲(chǔ)浪費(fèi)空間

3.3 標(biāo)記壓縮算法

  同標(biāo)記清除法相同,標(biāo)記過程相同,在清除過程中,先將垃圾對(duì)象壓縮到內(nèi)存末尾,然后再清除

缺點(diǎn):

  對(duì)象需要移動(dòng),效率有一些影響

3.4 復(fù)制算法

內(nèi)存被分為大小相同兩塊區(qū)域,一塊為From,一塊為To,程序向From區(qū)域存放數(shù)據(jù),當(dāng)from數(shù)據(jù)即將滿了的情況下,進(jìn)行垃圾回收:首先標(biāo)記垃圾對(duì)象,然后將沒有標(biāo)記的對(duì)象復(fù)制到To當(dāng)中,然后回頭將From所有區(qū)域清空,然后角色交換,F(xiàn)rom和To交換,保證To永遠(yuǎn)為空
  1.年輕代當(dāng)中分為Eden去和From和To區(qū),其中From和To區(qū)的大小時(shí)相同的,程序向Eden去和From區(qū)存放數(shù)據(jù),當(dāng)數(shù)據(jù)即將滿了的情況下
  2.Eden區(qū)會(huì)將活躍對(duì)象存放到To區(qū),F(xiàn)rom區(qū)會(huì)將年齡小的對(duì)象存放到To區(qū),那么年齡大的存放到Old年老代區(qū)域當(dāng)中
  3.清空Eden去和Old區(qū)的所有數(shù)據(jù),然后將From區(qū)角色和To區(qū)角色互換,這樣保證To區(qū)為空
  4.當(dāng)垃圾回收機(jī)制反復(fù)運(yùn)行時(shí),那么To區(qū)可能數(shù)據(jù)飽和,如果數(shù)據(jù)飽和則將所有對(duì)象轉(zhuǎn)移到Old年老區(qū)

3.5 分代算法

  合適的垃圾回收對(duì)象沿用合適的算法,在JVM當(dāng)中年輕代適合復(fù)制算法,年老代可以標(biāo)記清除發(fā),或者標(biāo)記壓縮算法

總結(jié)

以上是生活随笔為你收集整理的JVM之VisualVM工具的使用以及GC的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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