目錄
第一步:安裝jvisualvm
?第二步:安裝VisualvmGc插件
方式一:jvisualvm工具直接下載安裝
方式二:去官網(wǎng)下載導入安裝
總結(jié)
第三步:idea安裝VisualvM Launcher插件
第四步:演示young中eden、s0、s1垃圾回收過程
1、配置jvm堆大小
?2、啟動一個項目
3、打開jvisualvm
第五步:jvisualvm性能監(jiān)控可視化工具使用
1、菜單使用介紹
1.1、概述
1.2、監(jiān)控
1.3、線程
1.4、抽樣器
?第六步:總結(jié)
第一步:安裝jvisualvm
jvisualvm在安裝完jdk的時候就已經(jīng)存在了,自動安裝在jdk安裝目錄bin下面。windows可以到安裝目錄下直接執(zhí)行exe文件。
然后雙擊執(zhí)行,就自動打開界面:
?為了分析young區(qū)內(nèi)存分布與回收機制,我們還需要一個插件:VisualvmGc。
?第二步:安裝VisualvmGc插件
有兩個方式:
方式一:jvisualvm工具直接下載安裝
我們打開jvisualvm工具,然后我們可以找到工具菜單,選擇插件,彈出配置框。
然后點擊“可用插件”菜單,找到我們需要插件,勾選上之后,繼續(xù)安裝。
?等待安裝完成就可以,然后我們工具里面就可以看到了。
方式二:去官網(wǎng)下載導入安裝
官網(wǎng):VisualVM: Plugins Centers
選擇一個版本,然后去找到VisualvmGc插件;如圖:
這里我們可以看他有很多插件供我們使用。比如常用的:Jconsole
下載之后保存在本地,供后面安裝到?jvisualvm使用。
我們打開jvisualvm工具,然后我們可以找到工具菜單,選擇插件,彈出配置框
再選擇已下載菜單
?就可以導入我們上面官網(wǎng)下載的插件進行安裝。 下面與上面一步是一樣的操作。
總結(jié)
這里我們發(fā)現(xiàn)jdk自帶很多插件供我們使用,我們可以根據(jù)自己需要安裝對應的組件;非常方便。
至此:我們工具安裝好了,但是為了演示內(nèi)存分布,我們需要在idea配置安裝一下對應插件。
第三步:idea安裝VisualvM Launcher插件
1、首先打開idea,找出插件安裝菜單Plugins,然后搜索插件VisualvM Launcher,進行安裝。
安裝好之后,我們可以看到idea已安裝的組件菜單,然后點擊我們安裝好的插件,進行配置
?配置我們的JVisualVM.exe文件路徑,和jdk安裝的路徑
?安裝好之后,到此基礎(chǔ)環(huán)境配置就結(jié)束了。
然后我們可以看見我們idea多出兩個啟動按鈕:
后面我們測試就可以用它的。
第四步:演示young中eden、s0、s1垃圾回收過程
1、配置jvm堆大小
這個方便我們在本地環(huán)境模擬測試。
我們在idea中設(shè)置JVM堆內(nèi)存大小為300m,eden區(qū)和s0、s1為8:1:1(默認老年代和新生代為2:1)
-Xms300m -Xmx300m -XX:SurvivorRatio=8?
?2、啟動一個項目
隨便一個demo項目都可以,可以自己寫一個循環(huán)方法,線程睡眠等等都可以。
3、打開jvisualvm
然后點擊VisualvmGc
?
?然后我們可以看到這幾個分區(qū):
我們可以看到s0,s1和eden區(qū)此時他們的內(nèi)存變化,以及內(nèi)存存儲分布。
?剛開始進來我們看到eden區(qū)的內(nèi)存在不斷的增加,s0內(nèi)存可能沒有,可能有(項目剛啟動是沒有的,看項目加載的資源是否會存在s0)。s1的內(nèi)存一定是沒有的 。
但等一段時間,eden區(qū)滿了之后,就會里面清理一次,然后s0清空,s1增加了內(nèi)存
?再當eden區(qū)滿了之后,又開始一輪交替,eden區(qū)清空,s1清空,剩余放在s0區(qū)。你會發(fā)現(xiàn)在沒有其他操作清空下,他一直以此類推進行。
?
?當我們收到操作垃圾回收之后,我們發(fā)現(xiàn):
全部被回收,然后先使用eden區(qū),等eden區(qū)滿了之后s0才會存放垃圾。
第五步:jvisualvm性能監(jiān)控可視化工具使用
1、菜單使用介紹
1.1、概述
我們可以看到我們配置堆內(nèi)存大小
?1.2、監(jiān)控
這里我們可以右上角有幾個可選菜單,用來查看面板的,以及可以進行收到垃圾回收,以及堆dump查看與下載
?比如我們點擊堆dump可以看到堆內(nèi)存的詳細情況
?以及右擊可以下載分析堆dump文件:
同時還支持與另一個堆文件比較
可以通過類分析發(fā)現(xiàn)這兩個堆中那個類占的內(nèi)存越來越多,沒有被釋放,就可能哪個造成的oom。?
?1.3、線程
我們在打開線程菜單,可以看到所有運行的線程以及線程的dump文件
?同樣,我們可以下載線程的dump文件。
我們點擊右上角的“線程Dump”按鈕,可以看到如下線程的詳細信息。
?下載堆內(nèi)存之后從而可以檢查死鎖線程。
1.4、抽樣器
我們可以打開到抽樣的按鈕器,里面有
cpu的抽樣和內(nèi)存抽樣。
1、cpu抽樣,我們點擊之后,就可以實時運行,里面可以看到cpu樣例和線程cpu時間實時分析。
?2、內(nèi)存抽樣同樣也是,點擊之后進行分析。同樣有兩個部分:
?第六步:總結(jié)
至此我們的?JVisualVM基本使用以及young分區(qū)模擬就結(jié)束完了,這里只是介紹本地工程,我們遠程服務器一樣是可以,只要鏈接遠程服務器,就可以進行監(jiān)控。
這里配置鏈接我們遠程服務器就可以了。
后續(xù)我們將具體使用這個工具以及其他插件進行項目實戰(zhàn)中各種場景分析。
JVM-java對象內(nèi)存分布(二)_平凡之路無盡路的博客-CSDN博客文章來源:http://www.zghlxwxcb.cn/news/detail-515173.html
JVM GC ROOT分析與垃圾收集器原理分析(四)_平凡之路無盡路的博客-CSDN博客文章來源地址http://www.zghlxwxcb.cn/news/detail-515173.html
到了這里,關(guān)于JVM-jvisualvm性能監(jiān)控可視化工具使用與eden-s0-s1分配分析(三)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!