java 内存泄漏

关于内存泄漏这块,参考网络整理一下
一、什么是内存泄漏

对象已经没有被应用程序使用,但是垃圾回收器没办法移除它们,因为还在被引用着,这时候就会发生内存泄漏。

二、为什么会发生内存泄漏?

A对象引用B对象,A对象的生命周期比B对象的生命周期长的多。当B对象没有被应用程序使用之后,A对象仍然在引用着B对象。这样,垃圾回收器就没办法将B对象从内存中移除,从而导致内存问题,因为如果A引用更多这样的对象,那将有更多的未被引用对象存在,并消耗内存空间。

B对象也可能会持有许多其他的对象,那这些对象同样也不会被垃圾回收器回收。所有这些没在使用的对象将持续的消耗之前分配的内存空间。

三、如何防止内存泄漏的发生?

特别注意一些像HashMap、ArrayList的集合对象,它们经常会引发内存泄漏。当它们被声明为static时,它们的生命周期就会和应用程序一样长。
特别注意事件监听和回调函数。当一个监听器在使用的时候被注册,但不再使用之后却未被反注册。
如果一个类自己管理内存,那开发人员就得小心内存泄漏问题了。 通常一些成员变量引用其他对象,初始化的时候需要置空。

可以看看这篇博客:

http://blog.csdn.net/wisgood/article/details/16818243

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值