您的位置:首页 > 其它

深入理解jvm虚拟机-判断对象是否存活

2018-03-07 10:30 501 查看
引用计数算法: 给对象中添加一个引用计数器, 每当有一个地方引用它时, 该对象中的引用计数器就加1; 当引用失效时, 计                           数器就减1。当引用计数器的数值为0 时, 就表示该对象是不可能在使用的, 就可交给GC回收。
        但是主流的java虚拟机里没有使用引用计数算法来管理内存。其中最主要的原因是很难解决对象之间相互循环引用的问题。

可达性分析算法:  通过一系列的称为“GC Roots”的对象作为起始点, 从这些点开始向下搜索,搜索所走的路径称为称为引                                 用链, 当一个对象到GCRoots没有任何引用链相连的话, 表示该对象是不可用的,交给GC回收。
        在java中,作为GC Roots回收的对象:
        1. 虚拟机栈(栈帧中的本地变量表)中引用的对象。
        2. 方法区中类静态属性引用的对象。
        3. 方法区中常量引用的对象。
        4. 本地方法栈中 JNI (即一般说的Native方法) 引用的对象。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: