Java的GC以及内存泄漏

Java的GC以及内存泄漏

   作为一个Java程序员,因为有了GC,不知道帮我们省了多少麻烦。

GC也就是Garbage  Collection(垃圾回收机制),当Java虚拟机发现内存资源紧张的时候,就会自动去清理那些无用的对象(没有被引用到的对象)所占的内存空间。在堆中创建对象,GC会去监控每个对象的引用,申请空间等事件,Java会用有向图的方式进行管理,以下两种方式会导致回收:

    (1)当给对象赋值为null,之后再也没有调用过它;

    (2)给对象赋予了新值,重新分配了内存空间;此时旧的对象以及没有用了。


内存泄漏:也就是说内存里面被没有用的对象持续占用,造成了内存空间的浪费。

        根本的原因:长生命周期的对象被短生命周期的对象引用,从而导致了短生命周期的对象不再需要了,但是长生命周期的对象任然具有它的引用,所以不能被回收。

典型的两种情况:

 (1)在堆中分配的内存,没有将其释放掉的时候,就已经删除了访问该内存的方式;这样的情况,这样的情况可以通过GC来将其回收而解决掉。

         (2)还有就是对象已经不需要了,但是该对象以及访问它的方式还存在,这样就很有可能导致内存的泄漏。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值