Java内存回收机制

搞开发已有一段时间,感觉自己的技术没有很大的提升,归根究底,是自己对Java基础知识掌握的不够牢靠 ,自己的编码习惯也不好,现在看看自己写的代码,都不忍直视,在代码钟为了方便调用到处都是static的变量,方法。

觉得自己有必要扎实的去学习基础知识了....

今天也已特意去找了下Java内存回收机制方面的知识,整理记录已记之。

在Java中,它的内存管理包括两方面:内存分配(创建Java对象的时候)和内存回收,这两方面工作都是由JVM自动完成的,这使得我们程序员不再关心内存分配,导致很多程序低效,耗内存。因此就有了Java程序员到最后应该去了解JVM,才能写出更高效,充分利用有限的内存的程序。

Java中对于引用的对象的描述如下:当内存空间还足够时,则能保留在内存之中,如果内存在进行垃圾收集后还是非常紧张,则可以抛弃这些对象。

    Java中的引用分为强引用(Strong Reference),软引用(Soft Reference),弱引用(Weak Reference),虚引用(Phantom Reference)四种,强度依次减弱。

    a、强引用:类似"Object obj = new Object();"这类的引用,只要强引用还存在,垃圾收集器永远不会回收掉被引用的对象

    b、软引用:通过SoftReference类实现,SoftReference<Person> p = new SoftReference<Person>(new Person(“Rain”));内存非常紧张的时候会被回收,其他时候不会被回收,所以在使用之前要判断是否为null从而判断他是否已经被回收了。

    c、弱引用:通过WeakReference类实现,eg : WeakReference<Person> p = new WeakReference<Person>(new Person(“Rain”));不管内存是否足够,系统垃圾回收时必定会回收。

    d、虚引用:不能单独使用,主要是用于追踪对象被垃圾回收的状态。通过PhantomReference类和引用队列ReferenceQueue类联合使用实现。

如图:



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值