第三章:回收方法区

方法区的垃圾回收,即使永生代的垃圾收集:主要回收两部分内容,废弃的常量和无用类、

回收废弃的常量与Java堆中的对象非常类似,以常量池中字面量的回收为例:假如一个字符串"abc"已经进入了常量池中,但是当前系统没有任何一个String对象的是叫做abc的,换句话说就是没有任何STring对象引用常量池中abc常量,也没有任何其他地方引用这个字面量,如果这时发生内存回收,这个abc常量就会被系统清理出常量池。

判断一个类是否是无用类,需要满足如下规则:

  • 该类所有的实例都已经被回收了,也就是java堆中不存在该类的任何实例
  • 加载该类的classLoader已经被回收
  • 该类对应的java.lang.class对象没有在任何地方被引用,无法在任何地方通过反射访问该类的方法

在大量使用反射、动态代理、CGLib等ByteCode框架、动态生成JSP以及OSGi这类频繁自定义classLoader的场景都需要虚拟机具备类卸载的功能,以确保永生代不会溢出。

原文地址:https://www.cnblogs.com/use-D/p/10634144.html

时间: 2024-10-12 17:12:45

第三章:回收方法区的相关文章

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

第三章 垃圾收集器和内存分配策略 对象已死吗 引用计算方法 可达性分析算法 通过一些列的GC roots 对象作为起始点,从这些节点开始向下搜索,搜索所走过的路径成为引用链,当一个对象到GC roots 没有任何引用链的则证明对象不可用的 虚拟机栈中的引用的对象 方法区中类静态属性引用的对象 方法去区中常量引用的对象 本地方法栈中JNI引用的对象 生存还是死亡 一次筛选,筛选是否有必要执行 finalize()方法 没有覆盖或者finalize()已经被调用过  视为没必要执行 放入一个F-Qu

杨森翔:春节文化大观上编 第三章 春节古诗词 目录 第一节:春节诗词概述 一、 除夕诗词概述 二、元日诗词概述 三、 元宵诗词概述 第二节:春节古诗词拾萃

杨森翔:春节文化大观上编 第三章 春节古诗词 目录 第一节:春节诗词概述 一. 除夕诗词概述 二.元日诗词概述 三. 元宵诗词概述 第二节:春节古诗词拾萃 一.腊祭诗词 二.祭灶诗词 三.除夕诗词 四.元旦诗词 五.人日诗词 六.元宵诗词 第一节:春节古诗词概述 中国的春节,作为除旧迎新的节日,时间相当长,从年前的腊月二十三,天空中就似乎弥漫了节日的气息.这种节日的气氛,在保持传统风俗较好的地方,甚至会持续到二月二龙抬头的时候,但欢度春节的高潮,应该说是自除夕始一直到上元之夜.因此,历代歌咏和反

操作系统思考 第三章 虚拟内存

第三章 虚拟内存 作者:Allen B. Downey 原文:Chapter 3 Virtual memory 译者:飞龙 协议:CC BY-NC-SA 4.0 3.1 简明信息理论 比特是二进制的数字,也是信息的单位.一个比特有两种可能的情况,写为0或者1.如果是两个比特,那就有四种可能的组合,00.01.10和11.通常,如果你有b个比特,你就可以表示2 ** b个值之一.一个字节是8个比特,所以它可以储存256个值之一. 从其它方面来讲,假设你想要储存字母表中的字母.字母共有26个,所以你

linux程序设计——文件操作(第三章)

第三章    文件操作 3.1 linux文件结构 与UNIX一样,linux环境中的文件具有特别重要的意义,因为它们为操作系统服务和设备提供了一个简单而一致的接口.在linux中,一切都是文件. 这意味着,通常程序可以像使用文件那样使用磁盘文件.串行口.打印机等等. 目录也是文件,但它是一种特殊类型的文件.在现代UNIX(包括linux)版本中,即使是超级用户可能也不再被允许直接对目录进行写左操作了.所有用户通常都使用上层的opendir/readdir接口来读取目录,而无需了解特定系统中目录

第三章—Windows程序

这一章我都不知道该如何写了,呵呵~~ 毕竟,Win32是一个非常深奥的系统,目前还容不得我这种 小辈在这儿说三道四,不过,我既然是要写给那些入门阶段的朋友们看的,又不是写给那些搞程序设计老鸟看的,所以,我也犯不着怕被人背后指着骂 本章的名字就叫<Windows程序>而不是<Windows程序设计>所以,我只是讲一些关于Windows程序运作的原理: Windows 为什么叫Windows,相信所有用过的朋友都可以明白,那桌面上一个一个的窗口,就是它名字的由来.也就是这一个又一个窗口

第三章、主机规划与磁盘分区

1. Linux与硬件的搭配 1.1 认识计算机的硬件配备 1.2 选择与Linux搭配的主机配备: 硬件支持相关网站 1.3 各硬件装置在Linux中的档名 2. 磁盘分区 2.1 磁碟连接的方式与装置档名的关系 2.2 磁碟的组成复习 2.3 磁盘分区表(partition table) 2.4 启动流程与主要启动记录区(MBR) 2.5 Linux安装模式下,磁盘分区的选择(极重要) 3. 安装Linux前的规划 3.1 选择适当的distribution 3.2 主机的服务规划与硬件的关

数据库期末考试复习题 第三章

作者 : Dolphin 原文地址:http://blog.csdn.net/qingdujun/article/details/27826439 一.填空题 1. SQL语言的数据定义功能包括①模式定义.②表定义.③视图和④索引的定义. 2. 视图是一个虚表,它是从①基本表或其他视图表中导出的表.在数据库中,只存放视图的②定义,不存放视图的③数据. 二.简答/综合 1. 简述在 SQL中使用视图的优点. 答:1)简化操作 2)从多角度看同一数据 3)视图给数据提供了一定逻辑独立性 4)视图给数

第三章 垃圾收集器与内存分配策略

书中笔记: 也许并不会死: 要宣告回收一个对象死亡,至少要经历两次标记过程: 当可达性分析发现一个对象不可达的时候,将标记第一次并进行筛选,筛选的条件是此对象是否有必要执行finalize()方法,当对象没有覆盖finalize或者已被调用过,则虚拟机认为此对象没必要执行finalize,  如果判断有必要执行,则此对象将会被放入一个F-Queue队列中,之后会被一个优先级比较低的Finalizer线程去调用,但是并不会等待他执行完毕,因为此对象的finalize并不可靠,可能会死循环之类的,如

JavaScript DOM编程艺术-学习笔记(第三章、第四章)

第三章: 1.js的对象分为三种:①用户自定义对象 ② 内建对象(js提供的对象) ③宿主对象(js寄宿的环境-浏览器,提供的对象) 2.文档是由节点组成的集合,即dom树,html元素是根元素,是唯一一个没有被其它元素包含的元素. 3.元素节点并非直接包含文本节点,例如:<ul><li>你好</li><ul>    ul元素并没有直接包含文本元素 4.获取元素的方法: ①getElementById() ②getElementsByTagName ()  

《linux内核设计与实现》读书笔记第三章

第3章 进程管理 3.1 进程 1.进程 进程就是处于执行期的程序. 进程包括: 可执行程序代码 打开的文件 挂起的信号 内核内部数据 处理器状态 一个或多个具有内存映射的内存地址空间 一个或多个执行线程 用来存放全局变量的数据段 …… 实际上,进程就是正在执行的程序代码的实时结果 2.执行线程 简称线程,是在进程中活动的对象. 每个线程都拥有一个独立的程序计数器.进程栈和一组进程寄存器. 内核调度的对象是线程,而不是进程. 进程提供两种虚拟机制: 虚拟处理器和虚拟内存. 在线程之间可以共享虚拟