一,Jvisualvm介绍
jvisualvm是用来查看硬件使用情况的工具,多数会用它来看内存的使用情况
VisualVM 是Netbeans的profile子项目,已在JDK6.0 update 7 中自带(java启动时不需要特定参数,监控工具在bin/jvisualvm.exe),能够监控线程,内存情况,查看方法的CPU时间和内存中的对象,已被GC的对象,反向查看分配的堆栈(如100个String对象分别由哪几个对象分配出来的)。
对于线上的服务来讲,掌握内存使用情况是最重要的,另外的如cpu的使用情况(80%以内都可以),硬盘的使用情况(不够用可以增加),它俩相对来讲不那么重要。
二,使用Jvisualvm
进入正在使用的jdk下bin目录,运行jvisualvm.exe。
安装gc插件
先“检查更新”一下插件。 然后点击“可用插件”,找到Visual GC 点击安装。
补:【如果】插件安装报错
VisualVM: Plugins Centers
访问这个地址,找到对应版本再配置https://visualvm.github.io/uc/8u131/updates.xml.gz
选中要监控的线程
双击程序,观察右侧内容:
查看gc
内存中主要关注老年代和新生代,新生代触发GC是局部GC,速度比较快,老年代触发GC是全局GC,耗时比较久,尽量少触发全局GC。
新生代内存包括s0和s1,这两部分内存是GC时用来存储伊甸园中任然有引用的对象,两个区域交替使用,当s0中没有数据时s1中存储的就是上次GC时有引用的对象,再次触发GC时,数据会放到s0中,清空s1。old是观察成员变量,eden和s0,s1是局部变量。