2. with
代表所有引用了当前对象的对象集合
这两个选项的功能要理解清楚,关于他们的作用,看下面的例子:
public ClassA{private B b = new B();// b对象private Map map = new HashMap(); // map对象public A(){C c1 = new C(); // c1对象map.put("c1",c)}}Class B{private C c= new C();// c对象}Class c{private String str="1" // str对象}A a = new A()// a对象
上面的示例,可以得出以下结论:
如果一遍没有看懂上面的示例,建议多看几遍 。
再回到我们的分析中,我们要找出谁引用了类的这个实例对象作为缓存的key,所以选择 菜单,如下图所示:
列表中只有一条记录,说明这个的这个示例对象只被引用了一次,展开后的对象就是引用了实例对象的对象,看图可知,是一个对象内部类的Node节点对象引用了它(不知道这里在说什么的,去看下的源码) 。点击这个对象,左边选项卡列出了Node对象的四个成员变量,我们关注的是key和value,key就是对象,value则是一个对象,它是机构产品计费策略对象,很明显不是我们要找的对象 。
通过这种方式我们排查前三个对象都是不同日期的计费策略缓存对象,他们都是被的node对象引用的机构产品计费策略 。再分析第四个对象的 :
5. 适用场景
因为是通过抓取堆快照的方式,所以只能保存dump堆那一时刻内存中的变量,此种方法适用于常驻内存的变量的查找,例如缓存,全局变量等,针对那些局部变量,能否抓取到,就要看运气了 。
上面示例中的堆快照文件本来想提供,但是涉及到公司的一些信息,所以大家自己写个demo,按照上面方式分析一下,就不提供了 。
- 总能做出正确决定的幸运法则
- 液体压强与什么有关 液体压强与什么没有关系
- 屈原之前有没有端午节
- 移动conda环境后报:/home/×××/bin/python没有解析器的问题
- java打印素数初学者_当3D打印成为初学者时超越初学者
- Nginx日志记录访问信息
- 【笔记】openwrt - iptables 命令、例子、日志
- 零基础小白想学习并且从事次世代游戏建模都会遇到的6个问题,看看你有没有
- 四世同堂和四代同堂有没有区别 四世同堂和四代同堂是一个意思吗?
- 错题整理神器,还是这款错题打印机靠谱!