• Java 垃圾回收基础问题


    1、Object的finalize()方法的作用是否于C++的析构函数作用相同?

    与C++的析构函数不同,析构函数调用确定,而它的是不确定的

    将未被引用的对象放置在F-Queue队列

    方法执行随时可能被终止

    给予对象最后一次重生的机会

    finalize示例

    public class Finalization {
    
        public static Finalization finalization;
    
        @Override
        protected void finalize() throws Throwable {
            System.out.println("finalized");
            finalization = this;
        }
    
        public static void main(String[] args) throws InterruptedException {
            Finalization f = new Finalization();
            System.out.println("First print: " + f);
            f = null;
            System.gc();
            //休息一段时间,让上面的垃圾回收线程执行完成
            Thread.sleep(1000);
            System.out.println("Second print:" + f);
            System.out.println(f.finalization);
    
        }
    }
    

      

      打印结果:

    First print: jvm.gc.Finalization@2503dbd3
    finalized
    Second print:null
    jvm.gc.Finalization@2503dbd3

    2、Java中的强引用,软引用,弱引用,虚引用有什么用

    强引用(Strong Reference)

     最普遍的引用: Object obj = new Object()

     抛出OutOfMemoryError终止程序也不会回收具有强引用的对象

     通过将对象设置为null来弱化引用,使其被回收

    软引用(Soft Reference)

    对象处在有用但非必须的状态

    只有当内存空间不足时,GC会回收该引用的对象的内存

    可以用来实现高速缓存

    用法如下:

     弱引用(Weak Reference)

    非必须的对象,比软引用更弱一些

    GC时会被回收

    被回收的概率不大,因为GC线程优先级比较低

    适用于引用偶尔被使用且不影响垃圾收集的对象

    用法如下:

    虚引用(Phantom Reference) (顾名思义,弱引用形同虚设)

    不会决定对象的生命周期

    任何时候都可能被垃圾收集器回收

    跟踪对象被垃圾收集器回收的活动,起到哨兵作用

    必须和引用队列ReferenceQueue联合使用

    用法如下

    总结:四种引用级别

    强引用 > 弱引用 > 软引用 > 虚引用

    类的层次结构

    引用队列(ReferenceQueue)

    无实际存储结构,存储逻辑依赖于内部节点之间的关系来表达

    存储关联的且被GC的软引用,弱引用以及虚引用

  • 相关阅读:
    openstack项目【day23】:glance基础
    openstack项目【day23】:openstack组件介绍
    openstack项目【day23】:云计算介绍(一)
    学习有五个层次和境界
    gdb 初步学习记录
    Linux samba 服务的配置
    QT 5.7.0 移植之 tslib 编译配置
    tiny4412 u-boot 启动参数的设置
    Windows 只能安装32位虚拟机问题
    Tiny4412 虚拟机交叉编译环境的设置以及编译u-boot 和 kernel
  • 原文地址:https://www.cnblogs.com/linlf03/p/12180897.html
Copyright © 2020-2023  润新知