arthas--vmtool查看内存对象

时间:2025-04-24 09:13:34

原理:
vmtool 利用JVMTI接口,实现查询内存对象,强制 GC 等功能。

方式一

命令结构

vmtool --action getInstances -c   [类加载器的hash] --className  [目标类全路径]
 --limit 10 -x 2

 通过 --limit参数,可以限制返回值数量,避免获取超大数据时对 JVM 造成压力。默认值是 10。

通过 -x/--expand 参数可以指定结果的展开层次,默认值是 1。


例如:
查看对象的内容

vmtool --action getInstances --className  
--limit 3 --expand 4

强制GC

vmtool --action forceGc

方式二

命令格式:

 vmtool --action getInstances -c 7637f22   --className 【容器全路径】
--express 'instances[0].getBean("实例对象名").【属性名】' 

获取当前类是那个类加载器加载的

sc -d 【目标类】

例如:
查询spring容器中的某个对象

 vmtool --action getInstances    -c [ 7637f22] --className []
--express 'instances[0].getBean("mytest")' 

查询spring容器中的某个对象的某个属性值
 

vmtool --action getInstances -c 7637f22   --className  --express
 'instances[0].getBean("mytest").testName' 

getstatic 查看私有的静态变量的内容

getstatic  params