gc — Java 垃圾回收机制

近期在学习Java垃圾回收机制,有些总结与心得记录下来:

当对象彻底失去引用时,垃圾回收机制会回收其占用的内存

 

只有当程序认为需要更多的额外内存时,垃圾回收机制才会进行垃圾回收

特点:

1.      只回收堆内存中的对象,不回收任何物理资源(数据库链接,网络IO等)

2.      程序无法精确控制垃圾回收的运行

3.      在垃圾回收机制回收之前,会调用它的finalize()方法,可能使该对象重新得到引用而不被回收


状态的转化:

强制垃圾回收:

         前面有提到“程序是无法精确控制Java回收的时机”,强制垃圾回收只是提醒系统进行垃圾回收,具体时间无法确定。

         下面提供两种方法:

         System.gc()

         Runtime.getRuntime().gc()

 

对象的各种引用方式

1. 强引用  StrongReference

    l  时最常使用的一种引用方式:如对象,数组的创建;

    l  当一个对象被一个及以上的引用变量引用时,不会被垃圾回收;

2. 软引用  SoftReference

    l  通常用于对内存敏感的程序中

    l  内存充足时不会被回收;内存不足时可能被回收

3. 弱引用  WeakReference

    l  与软引用类似,但比其级别更低

    l  不管内存是否足够,都回收该对象占用的内存;但回收时机取决于

   回收机制运行时才被回收

        

4. 虚引用  PhantomReference

    l  虚引用不能单独使用,必须和引用队列联合使用

    l  虚引用主要用于跟踪对象被垃圾回收的状态



猜你喜欢

转载自blog.csdn.net/jiweilai1/article/details/80079293