java中关于对象的可达可用问题
2024-10-06 10:30:44
(注:本文引用知识纯粹为技术交流,未经允许不可私自转载)
Java中其实也有内存泄露,就是因为对象无用却可达的原因.
这个细分细分下来有三个
1. 不可用不可达------>这种情况GC会帮我们回收掉,而C++不会
2. 不可用可达 ------>这种情况会存在内存泄露
3. 可用可达 ------>正常使用 1.不可用不可达就是我们的变量作用域结束了,不可用不可达
2. 不可用可达,就是我们自己没有将其对象,
举个例子:
在这个例子中,我们循环申请Object对象,并将所申请的对象放入一个Vector中,如果我们仅仅释放引用本身,那么Vector仍然引用该对象,所以这个对象对GC来说是不可回收的。因此,如果对象加入到Vector后,还必须从Vector中删除,最简单的方法就是将Vector对象设置为null
Vector v=new Vector(10);
for (int i=1;i<100; i++)
{
Object o=new Object();
v.add(o);
o=null;
} //此时,所有的Object对象都没有被释放,因为变量v引用这些对象。
这时候这些Object就是不可用可达的对象,GC不会帮我们清理的, 这就存在了内存泄露了
3. 可用可达就不做介绍了
最新文章
- CustomUI Direct3D9_Sample
- Python多线程开发简介
- PostGreSQL存储过程
- Gatling->;次时代性能测试利器
- thanksgiving day (eat)
- Yii防注入攻击笔记
- Jquery not选择器实现元素显示隐藏
- angularjs directive and component 指令与组件 ( 1.5.0 以后 )
- JS、CSS兼容性问题的几点总结
- JAVA布局管理器
- OpenSUSE 13.2使用VPN(PPTP)
- 【转】Linux上vi(vim)编辑器使用教程
- Vue-Router嵌套路由
- android --------- 嵌套unity出现 your hardware does not support this application,sorry!
- 在Ubuntu登陆界面输入密码之后,黑屏一闪后,又跳转到登录界面
- PHP中字符串与html相互转化函数
- WEB应用程序:AJAX全套
- php-url地址加密
- 流程控制与数组——Java疯狂讲义
- intelj idea编译项目报错,Error:ajc: The method getDestHost() is undefined