`
frenchmay
  • 浏览: 232229 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

深入java虚拟机第9章, 垃圾收集(2)

阅读更多

垃圾收集

引用计数

堆中每一个对象都有一个引用计数。当一个对象被创建了,并且指向该对象的引用被分配给一个变量,这个对象的引用计数被置为1.当任何其他变量被赋值为对这个对象的引用时,计数加1。当一个对象的引用超过了生存期或者被设置一个新的值时,对象的引用计数减1.任何引用数为0的对象可以被当作垃圾收集。当一个对象被垃圾收集的时候,它引用的任何对象计数值减1.在这种方法中,一个对象被垃圾收集后可能导致后续其他对象的垃圾收集工作。

好处是,垃圾收集工作可以很快执行。缺点是,无法检测出两个或者更多对象循环引用的情况。

 

跟踪收集器

跟踪从根结点开始的对象引用图。在追踪的过程中遇到的对象以某种方式打上标记。当跟踪结束时,未被标记的对象就知道是无法触及的,从而可以被收集。(标记并清除)

 

堆碎片收集

标记并清楚收集器使用两种策略:压缩和拷贝,来快速移动对象来减少堆碎片。

压缩收集器将活动的对象移动到堆的一端。堆的另一端出现一个大的连续空闲区。所有被移动的对象的引用也会被更新,指向新位置。

 

拷贝收集器把所有的活动对象移动到一个新的位置。在拷贝过程中,它们被紧挨着排放,可以消除原本在旧区域的空隙。

一般的拷贝收集器算法为“停止并拷贝”。在这个方案中,堆被分为两个区域,任何时候都只能使用其中一个。

 

按代收集的收集器

拷贝收集器的缺点:

1)大多数程序创建的大部分对象都具有很短的生命周期。

2)大多数程序都创建一些具有非常长生命周期的对象。

 

拷贝收集器浪费效率的一点是,它们每次都把生命周期长的对象来回拷贝,消耗大量的时间。

按代收集器通过把对象按照寿命来分组来解决这个效率底下的问题,更多地收集哪些那些短暂出现的年幼对象。

堆被分成多个子堆,每个堆为一代。最年幼的堆进行最频繁的垃圾收集。如果一个相对年幼的对象经历了好几次垃圾收集后仍然存在,那么这个对象就成长成寿命更高的一代,转移到另一个子堆。

分享到:
评论

相关推荐

    深入Java虚拟机(原书第2版).pdf【附光盘内容】

    《深入Java虚拟机(原书第2版)》,原书名《Inside the Java Virtual Machine,Second Edition》,作者:【美】Bill Venners,翻译:曹晓钢、蒋靖,出版社:机械工业出版社,ISBN:7111128052,出版日期:2003 年 9 ...

    深入JAVA虚拟机第二版.pdf 目录

    译者序 前言 第1章 Java体系结构介绍 ...第9章 垃圾收集 第10章 栈和局部变量操作 第11章 类型转换 第12章 整数运算 第13章 逻辑运算 第14章 浮点运算 第15章 对象和数组 第16章 控制流 第17章 异常 第18章 finally子句

    深入JAVA虚拟机第二版 Bill Venners著 曹晓钢 蒋靖译

    《深入JAVA虚拟机第二版》是由Bill Venners撰写,并由曹晓钢和蒋靖翻译的中文书籍。这本书是Java开发者必备的经典读物,它详细地解析了Java虚拟机(JVM)的工作原理,帮助读者深入理解Java程序的运行机制。尽管描述...

    深入java虚拟机 高清pdf 高清高清高清

    《深入Java虚拟机》这本书是Java开发者深入了解JVM(Java Virtual Machine)的必备经典之作。它详尽地探讨了Java虚拟机的工作原理、内存管理、类加载机制、字节码执行以及性能优化等多个核心主题,旨在帮助开发者...

    深入JAVA虚拟机 不那么完美的第二版.pdf.zip

    《深入JAVA虚拟机 不那么完美的第二版》这本书虽然在印刷上可能存在一些小瑕疵,但这并不影响我们从中汲取宝贵的Java虚拟机(JVM)知识。Java虚拟机是Java平台的核心组成部分,它负责执行Java程序,提供了跨平台的...

    深入Java虚拟机(原书第2版)及书中源代码

    第9章 垃圾收集 第10章 栈和局部变量操作 第11章 类型转换 第12章 整数运算 第13章 逻辑运算 第14章 浮点运算 第15章 对象和数组 第16章 控制流 第17章 异常 第18章 finally子句 第19章 方法的调用与返回 第20章 ...

    深入java虚拟机第二版随书光盘

    《深入Java虚拟机第二版》是一本深受Java开发者喜爱的经典著作,它详尽地剖析了Java虚拟机(JVM)的工作原理,为程序员提供了深入了解Java平台核心机制的机会。随书光盘包含了书中提及的各种示例代码、实验数据以及...

    深入JAVA虚拟机第二版.7z

    《深入JAVA虚拟机第二版》是一本专注于Java虚拟机(JVM)的权威指南,针对JVM的深入了解和优化提供了详尽的解析。这本书对于Java开发者、系统管理员以及对Java性能调优感兴趣的读者来说,是不可或缺的参考资料。下面...

    深入Java虚拟机第二版chm英文

    《深入Java虚拟机第二版》是一本深度剖析Java虚拟机(JVM)的权威著作,其英文版以CHM(Microsoft Compiled HTML Help)格式呈现,为读者提供了方便的电子阅读体验。CHM文件是一种常见的帮助文档格式,它将HTML页面...

    深入java虚拟机中文第2版

    第9章 垃圾收集 第10章 栈和局部变量操作 第11章 类型转换 第12章 整数运算 第13章 逻辑运算 第14章 浮点运算 第15章 对象和数组 第16章 控制流 第17章 异常 第18章 finally子句 第19章 方法的调用与返回 第20章 ...

    深入Java虚拟机(带目录+清晰+光盘) 第二版

    《深入Java虚拟机(带目录+清晰+光盘) 第二版》是Java开发者们不可或缺的一本技术宝典。本书全面、深入地探讨了Java虚拟机(JVM)的工作原理和内部机制,对于理解Java程序的运行性能以及优化代码具有极其重要的价值。...

    深入Java虚拟机(原书第二版)Bill Venners 著

    《深入Java虚拟机》是Java开发者必读的经典之作,由Bill Venners撰写。这本书以其深入浅出的方式,详尽地解析了Java虚拟机(JVM)的工作原理和内部机制,帮助开发者提升对Java程序运行时环境的理解,从而能够编写出...

    深入java虚拟机源码

    《深入Java虚拟机源码》一书主要涵盖了Java虚拟机(JVM)的内部工作原理,包括类加载机制、内存管理、字节码执行引擎、垃圾收集算法、编译优化等多个核心主题。以下是对这些章节内容的详细阐述: 1. **第3章:类...

    深入Java虚拟机 Bill Venners著 2003.09 P461.rar

    《深入Java虚拟机》是Bill Venners的经典之作,该书详细揭示了Java技术的核心——Java虚拟机(JVM)的内在运作机制。在2003年9月出版的这个版本中,作者深入浅出地阐述了JVM的架构和功能,帮助读者理解Java程序的...

    深入JAVA虚拟机第二版

    《深入JAVA虚拟机第二版》是一本专注于Java虚拟机(JVM)的权威指南,它为读者揭示了Java编程语言背后的运行机制。本书是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虚拟机第二版 2(共2部分)

    《深入JAVA虚拟机第二版》是一部深度探讨Java虚拟机(JVM)的权威著作,它为开发者揭示了Java程序运行的底层机制,帮助读者理解并优化Java应用性能。本资源包含该书的第二版部分内容,分为了六个部分,分别是:part...

    深入JAVA虚拟机第二版 1(共2部分)

    《深入JAVA虚拟机第二版》是一部深度探讨Java虚拟机(JVM)的权威著作,它为开发者揭示了JVM的工作原理及其内部机制。本部分涵盖了第一到第七个部分的内容,旨在帮助读者理解并优化Java应用程序的性能。 1. **Java...

Global site tag (gtag.js) - Google Analytics