垃圾收集
引用计数
堆中每一个对象都有一个引用计数。当一个对象被创建了,并且指向该对象的引用被分配给一个变量,这个对象的引用计数被置为1.当任何其他变量被赋值为对这个对象的引用时,计数加1。当一个对象的引用超过了生存期或者被设置一个新的值时,对象的引用计数减1.任何引用数为0的对象可以被当作垃圾收集。当一个对象被垃圾收集的时候,它引用的任何对象计数值减1.在这种方法中,一个对象被垃圾收集后可能导致后续其他对象的垃圾收集工作。
好处是,垃圾收集工作可以很快执行。缺点是,无法检测出两个或者更多对象循环引用的情况。
跟踪收集器
跟踪从根结点开始的对象引用图。在追踪的过程中遇到的对象以某种方式打上标记。当跟踪结束时,未被标记的对象就知道是无法触及的,从而可以被收集。(标记并清除)
堆碎片收集
标记并清楚收集器使用两种策略:压缩和拷贝,来快速移动对象来减少堆碎片。
压缩收集器将活动的对象移动到堆的一端。堆的另一端出现一个大的连续空闲区。所有被移动的对象的引用也会被更新,指向新位置。
拷贝收集器把所有的活动对象移动到一个新的位置。在拷贝过程中,它们被紧挨着排放,可以消除原本在旧区域的空隙。
一般的拷贝收集器算法为“停止并拷贝”。在这个方案中,堆被分为两个区域,任何时候都只能使用其中一个。
按代收集的收集器
拷贝收集器的缺点:
1)大多数程序创建的大部分对象都具有很短的生命周期。
2)大多数程序都创建一些具有非常长生命周期的对象。
拷贝收集器浪费效率的一点是,它们每次都把生命周期长的对象来回拷贝,消耗大量的时间。
按代收集器通过把对象按照寿命来分组来解决这个效率底下的问题,更多地收集哪些那些短暂出现的年幼对象。
堆被分成多个子堆,每个堆为一代。最年幼的堆进行最频繁的垃圾收集。如果一个相对年幼的对象经历了好几次垃圾收集后仍然存在,那么这个对象就成长成寿命更高的一代,转移到另一个子堆。
分享到:
- 2009-01-04 21:17
- 浏览 893
- 评论(0)
- 论坛回复 / 浏览 (0 / 1378)
- 查看更多
相关推荐
《深入Java虚拟机(原书第2版)》,原书名《Inside the Java Virtual Machine,Second Edition》,作者:【美】Bill Venners,翻译:曹晓钢、蒋靖,出版社:机械工业出版社,ISBN:7111128052,出版日期:2003 年 9 ...
译者序 前言 第1章 Java体系结构介绍 ...第9章 垃圾收集 第10章 栈和局部变量操作 第11章 类型转换 第12章 整数运算 第13章 逻辑运算 第14章 浮点运算 第15章 对象和数组 第16章 控制流 第17章 异常 第18章 finally子句
《深入JAVA虚拟机第二版》是由Bill Venners撰写,并由曹晓钢和蒋靖翻译的中文书籍。这本书是Java开发者必备的经典读物,它详细地解析了Java虚拟机(JVM)的工作原理,帮助读者深入理解Java程序的运行机制。尽管描述...
《深入Java虚拟机》这本书是Java开发者深入了解JVM(Java Virtual Machine)的必备经典之作。它详尽地探讨了Java虚拟机的工作原理、内存管理、类加载机制、字节码执行以及性能优化等多个核心主题,旨在帮助开发者...
《深入JAVA虚拟机 不那么完美的第二版》这本书虽然在印刷上可能存在一些小瑕疵,但这并不影响我们从中汲取宝贵的Java虚拟机(JVM)知识。Java虚拟机是Java平台的核心组成部分,它负责执行Java程序,提供了跨平台的...
第9章 垃圾收集 第10章 栈和局部变量操作 第11章 类型转换 第12章 整数运算 第13章 逻辑运算 第14章 浮点运算 第15章 对象和数组 第16章 控制流 第17章 异常 第18章 finally子句 第19章 方法的调用与返回 第20章 ...
《深入Java虚拟机第二版》是一本深受Java开发者喜爱的经典著作,它详尽地剖析了Java虚拟机(JVM)的工作原理,为程序员提供了深入了解Java平台核心机制的机会。随书光盘包含了书中提及的各种示例代码、实验数据以及...
《深入JAVA虚拟机第二版》是一本专注于Java虚拟机(JVM)的权威指南,针对JVM的深入了解和优化提供了详尽的解析。这本书对于Java开发者、系统管理员以及对Java性能调优感兴趣的读者来说,是不可或缺的参考资料。下面...
《深入Java虚拟机第二版》是一本深度剖析Java虚拟机(JVM)的权威著作,其英文版以CHM(Microsoft Compiled HTML Help)格式呈现,为读者提供了方便的电子阅读体验。CHM文件是一种常见的帮助文档格式,它将HTML页面...
第9章 垃圾收集 第10章 栈和局部变量操作 第11章 类型转换 第12章 整数运算 第13章 逻辑运算 第14章 浮点运算 第15章 对象和数组 第16章 控制流 第17章 异常 第18章 finally子句 第19章 方法的调用与返回 第20章 ...
《深入Java虚拟机(带目录+清晰+光盘) 第二版》是Java开发者们不可或缺的一本技术宝典。本书全面、深入地探讨了Java虚拟机(JVM)的工作原理和内部机制,对于理解Java程序的运行性能以及优化代码具有极其重要的价值。...
《深入Java虚拟机》是Java开发者必读的经典之作,由Bill Venners撰写。这本书以其深入浅出的方式,详尽地解析了Java虚拟机(JVM)的工作原理和内部机制,帮助开发者提升对Java程序运行时环境的理解,从而能够编写出...
《深入Java虚拟机源码》一书主要涵盖了Java虚拟机(JVM)的内部工作原理,包括类加载机制、内存管理、字节码执行引擎、垃圾收集算法、编译优化等多个核心主题。以下是对这些章节内容的详细阐述: 1. **第3章:类...
《深入Java虚拟机》是Bill Venners的经典之作,该书详细揭示了Java技术的核心——Java虚拟机(JVM)的内在运作机制。在2003年9月出版的这个版本中,作者深入浅出地阐述了JVM的架构和功能,帮助读者理解Java程序的...
《深入JAVA虚拟机第二版》是一本专注于Java虚拟机(JVM)的权威指南,它为读者揭示了Java编程语言背后的运行机制。本书是Java开发者深入理解平台内部工作原理的必备读物,无论你是初学者还是经验丰富的开发人员,都...
深入java虚拟机第二版 第1章 Java体系结构介绍 1.1 为什么使用Java 1.2 网络带来的挑战和机遇 1.3 体系结构 1.3.1 Java虚拟机 1.3.2 类装载器的体系结构 1.3.3 Java class文件 1.3.4 Java API 1.3.5 ...
《深入JAVA虚拟机第二版》是一部深度探讨Java虚拟机(JVM)的权威著作,它为开发者揭示了Java程序运行的底层机制,帮助读者理解并优化Java应用性能。本资源包含该书的第二版部分内容,分为了六个部分,分别是:part...
《深入JAVA虚拟机第二版》是一部深度探讨Java虚拟机(JVM)的权威著作,它为开发者揭示了JVM的工作原理及其内部机制。本部分涵盖了第一到第七个部分的内容,旨在帮助读者理解并优化Java应用程序的性能。 1. **Java...