zoukankan      html  css  js  c++  java
  • JVM笔记(4)--对象已死?和方法区回收

    第三章 垃圾回收器和内存分配策略

                第一节 判断对象是否死亡和回收方法区

        一 判断对象是否死亡:

          1)在Java主流的虚拟机中是通过 可达性分析算法

          可达性分析算法:是指通过CG Roots的节点集通过引用关系开始搜索对象,搜索到的对象的路径称之为“可达链”,若搜索到的对象还在这条链上则该对象还可以使用 ,反之对象不能使用。

          2)而对于引用计数算法是通常用在python,游戏的脚本语言中微软的com(component object model)技术中。

                引用计数算法:在Java堆单独开辟一个存储引用计数器的内存空间,当对象被引用该计数器值就加一,当引用失效时,该计数器的值就减一,当计数器的值为0时,该对象就会消亡。

        二 回收方法区主要包括 废弃的常量 和 不在使用的类型:

          1)常量回收要求:例如 “Java”字符串, 没有字符串对象引用常量池中如 “java”这个常量,在虚拟机中没有任何地方引用这个字面量

          2)一个类型是否属于“不在被使用的类”:1 所有实例都被回收。2加载该类的类加载器被卸载了。3该类的对象没有被任何地方引用,无法通过反射访问到该类的方法。

        总结:为什么要了解垃圾收集和内存分配?

                           主要时对于我们排查各种内存溢出,内存泄漏问题。

    未完待续!!!

  • 相关阅读:
    103. 二叉树的锯齿形层次遍历
    102. 二叉树的层次遍历
    94. 二叉树的中序遍历
    Redis和数据库 数据同步问题
    203. 移除链表元素
    19. 删除链表的倒数第N个节点
    237. 删除链表中的节点
    141. 环形链表
    2. 两数相加
    143. 重排链表
  • 原文地址:https://www.cnblogs.com/linyu1/p/13831135.html
Copyright © 2011-2022 走看看