public void registerMsg(Object b);
这种调用就要非常小心了,传入了一个对象,很可能模块B就保持了对该对象的引用,这时候就需要注意模块B 是否提供相应的操作去除引用 。
6、单例模式
不正确使用单例模式是引起内存泄露的一个常见问题,单例对象在被初始化后将在JVM的整个生命周期中存在(以静态变量的方式),如果单例对象持有外部对象的引用,那么这个外部对象将不能被jvm正常回收 , 导致内存泄露,考虑下面的例子:
class A{
public A(){
B.getInstance().setA(this);
}
....
}
//B类采用单例模式
class B{
private A a;
private static B instance=new B();
public B(){}
public static B getInstance(){
return instance;
}
public void setA(A a){
this.a=a;
}
//getter...
}
显然B采用singleton模式,它持有一个A对象的引用,而这个A类的对象将不能被回收 。想象下如果A是个比较复杂的对象或者集合类型会发生什么情况
关于java代码检查内存泄漏和java内存泄露的问题调查定位的介绍到此就结束了 , 不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。
推荐阅读
- 快手直播记录如何查询微信,微信怎么看快手直播回放
- jsfor循环下一循环,jsx for循环
- html5+语音输入唤醒,html语音播报功能
- cpu辅助电源是什么,cpu辅助电源是什么东西
- mysql怎么分类 mysql怎么分类查询
- 苹果手机怎么退款流程图,苹果手机上怎么退款退款流程图
- 企业如何做网络营销策划,企业如何做网络营销策划方案
- thinkphp模板去小数点,thinkphp去掉indexphp
- c语言swap函数交换 c语言swap函数交换数组