61.可达性分析算法具体应用场景: 算法思想:两个对象之间互相循环引用不好解决,那就给他们同一个父祖先,这个对象不管在哪里,只要这个对象到达GC Roots有路,也就是有引用链,那么这个对象就是可达的。反之,如果这个对象到达GC Roots没路了,不可达,那么这个对象已死不可用。图中 Object5,6,7就因为不可达,所有可以被回收。 那么问题来了,这个GC Roots又是何方神圣? 其实这个就是对象,在Java语言中,可作为GC Roots的对象包括下面几种: 虚拟机栈(栈帧中的本地变量表)中引用的对象 方法区中类静态属性引用的对象 方法区中常量引用的对象 本地方法栈中JNI(即一般说的Native方法)引用的对象 System Class(系统类,例如Java.util.*), Thread Block(一个对象存活在一个阻塞的线程中) , Thread(线程),正在运行的线程 Busy Monitor (调用了wait()或notify()或已同步的所有内容。例如,通过调用synchronized(Object)或进入 synchronized 同步方法。静态方法表示类,非静态方法表示对象。 被这些对象引用的对象,都是可达的。
点赞 评论

相关推荐

人生一梦:24年我投暑期实习,它以我不是女的为理由拒绝了我查看图片
点赞 评论 收藏
分享
牛客网
牛客企业服务