推广 热搜: 二手  净利2626万  北京  二手车  SMM废铜现货交易日评  企业  全国  汽车  三星  公司 

曝光内存泄漏:你真的认知它吗

   日期:2024-12-02     来源:www.kmgiq.com    作者:二手网    浏览:768    评论:0    
核心提示:[db:简介]

Java最显著的优势之一就是它的内存管理机制。你仅需简单创建对象,然后Java垃圾收购机制便会小心的分配和释放内存。然而,事实并不是这样简单,由于在Java应用程序中常常发生内存泄漏。

本课程说明了什么是内存泄漏,为何会发生,与怎么样预防它们。

1.什么是内存泄漏?

内存泄漏的概念: 对象不再被应用程序用,但垃圾收购器却不可以移除它们,由于它们正在被引用。

要理解这个概念,大家需要理解对象在内存中的状况,下图说明了什么是未被用的与什么是未被引用的。

从图中可以看到被引用的对象和未被引用的对象。未被引用的对象将会被垃圾收购器收购,而被引用对象则不会被收购。未被引用的对象理所当然是未被用的,由于没其他的对象引用它。然而,未被用的对象并可能不是未被引用的,其中一些是被引用的。这就是内存泄漏的起因。

2.为何会发生内存泄漏?

让大家来看看下面这个例子,看看为何内存泄漏会发生。在如下例子中,对象A引用了对象B。A的生命周期(t1t4)要比B的生命周期(t2t3)长不少。当B不再用于应用中时,A仍然持有对它的引用。在这种方法下,垃圾收购器就不可以将B从内存中移除。这将可能致使出现内存不足的问题,由于假如A对更多的对象做同样的事情,那样内存中将会有不少没办法被收购的对象,这将极度耗费内存空间。

也大概B持有很多对其他对象的引用,这类被B引用的对象也不可以够被收购。所有这类未被用的对象将会耗费宝贵的内存空间。

3.怎么样阻止内存泄漏?

以下是一些阻止内存泄漏的迅速动手方法。

(1)注意集合类,比如HashMap,ArrayList,等等。由于它们是内存泄漏常常发生的地方。当它们被声明为静态时,它们的生命周期就同应用程序的生命周期一般长。

(2)注意事件监听器和回调,假如一个监听器已经注册,但当这个类不再被用时却未被注销,就会发生内存泄漏。

(3)假如一个类管理它我们的内存,技术员应该对内存泄漏维持警惕。[1] 有时候当一个对象的成员变量指向其他对象时,不再用时需要被置为null。

你的关注转发,是对我最大的鼓励!按期推荐技术干货,在技术员进阶的路上一块学习成长。

 
标签: 内存 泄漏
打赏
 
更多>同类二手资讯
0相关评论

热门推荐
推荐图文
推荐二手资讯
点击排行
网站首页  |  关于我们  |  联系方式  |  免责声明  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报