`

jvm004-垃圾回收机制

 
阅读更多
01,垃圾就是无用的对象,无用的对象就是这个存放在堆中的对象的引用,没有任何变量使用它了。没有变量使用它了,当然需要把它所占用的内存给收回来,好重新使用这个对象占用的内存,来创建新的对象。
02,到底如何去识别那个对象是无用的,那个对象是有用的呢?肯定存在很多算法和机制来解决这个问题。
02.01,引用计数法,最原始的方法,也是很容易理解的方法,给每个对象额外添加一个标记计数器,起始为0,当有变量引用它时,这个标记计数器+1,当这个变量的引用改变或脱离自己的作用域时,这个对象的标记计数器-1,当这个对象的的标记计数器为0时,直接调用垃圾回收线程回收。此算法为实时算法,开销较大,而且无法解决相互调用的问题。
02.02,标记-清除算法,不再是实时的垃圾回收处理了,额外的提供一个线程去处理垃圾回收,遍历每个线程栈中的变量,凡是和此变量相关的对象全部标记为可用;遍历完之后,再去遍历堆中的对象,假如此对象没有标记为可用,那么立即回收此对象。此算法解决了引用计数法的问题,但是此法的垃圾回收线程执行时,所有其他的线程必须停下来。而且此法的垃圾回收线程执行后,内存一片碎片,导致大的对象无法创建。
02.03,标记-清除-压缩算法,为解决上面算法引起的内存碎片问题,可以在上面算法的基础加上一个碎片整理,让这些活着的对象重写排列。
02.04,复制收集器,标记-清除-压缩算法,在排列可用对象时,确实是比较繁琐,每个对象都需要相互靠近来排列,消耗时间比较长,于是可以采用用空间来换取时间的方法,将堆空间分为同等大小的两块,同时使用的只有一块,当一块用完需要垃圾回收时,就将这一块采用标记-清除算法,之后将这一块可用对象全部复制到另一块中,再创建新的对象就在这一块了。
02.05,增量收集器
02.06,分代搜集算法,以上对堆中活动对象碎片问题的解决无非压缩和拷贝,但是很多对象的存活时间不同,如果对所有对象都使用压缩和拷贝的话,存活时间长的对象将消耗垃圾回收的时间,因此可以将堆中对象分块,分几块就牵扯到了具体的算法,一般分两块,即新生代和年老代。在新生代对应的堆中创建对象,分配内存,当到了一定的时间或次数或空间(依赖于具体的算法)后,将存活对象放到年老代。新生代和年老代垃圾回收的频率是不一样的,新生代回收频率大。新生代垃圾回收有多重算法,以上算法都可以,但是最为好的是将新生代再次分代,还是分为两个,创建区和存活区,创建区专门负责创建对象,当创建区满时,将此区回收,把存活对象放到存活区中,存活区采用的是复制收集算法,用空间来换取时间,存活区有两个大小相同的区域1和2。
02.07,并发收集器,
02.08,并行收集器,
分享到:
评论

相关推荐

    J a v a 堆的管理-垃圾回收机制的算法分析与研究

    本文深入探讨了Java垃圾回收机制的特点及其在Java虚拟机(JVM)中的应用,并详细分析了几种典型的垃圾收集算法。此外,文章还介绍了如何通过命令行参数来调整垃圾回收的行为以及`finalize`方法的作用。通过理解这些...

    JVM垃圾回收机制.xmind

    自己学习总结JVM垃圾回收机制的结构图,一起分享!!!

    jvm内存模型以及垃圾回收机制.pptx

    Java虚拟机(JVM)内存模型和垃圾回收机制是Java开发中至关重要的概念。本文将深入探讨这两个主题,帮助理解JVM如何管理和优化内存。 **一、类加载器和双亲委派机制** 类加载器是JVM的一个组成部分,负责加载Java...

    JVM垃圾回收机制

    我们通过深入探讨以下几个关键点来理解JVM垃圾回收机制的工作原理: 1. 如何确定某个对象是“垃圾”? JVM垃圾回收机制通过两种主要算法来确定对象是否成为垃圾,即“可达性分析算法”和“引用计数法”。 - 可达性...

    JVM垃圾回收机制与GC性能调优

    Java虚拟机(JVM)的垃圾回收(GC)机制是Java程序高效运行的关键部分,它自动管理内存,释放不再使用的对象以避免内存泄漏。本文主要探讨JVM堆内存的结构和GC的工作原理,以及如何进行性能调优。 JVM堆是Java应用...

    JVM的工作原理及垃圾回收机制介绍

    ### JVM工作原理及垃圾回收机制详解 #### 一、JVM概述及原理 **1.1 JVM概述** Java Virtual Machine (JVM),即Java虚拟机,是一种虚构的计算机,在实际的计算机硬件上仿真模拟出的一套完整的计算机系统,用于执行...

    JVM的垃圾回收机制详解和调优

    理解并优化JVM的垃圾回收机制对于提升Java应用的性能至关重要。 一、垃圾回收的基本概念 1. 对象生命周期:当一个对象被创建后,它会经历新生、壮年、老年代等阶段。垃圾回收主要关注的是不再被引用的对象,即...

    JVM基础-超清文字版.pdf

    - 垃圾收集器(Garbage Collector, GC):自动回收不再使用的对象,避免内存泄漏。 - 分代收集:根据对象生命周期将堆分为新生代、老年代,使用不同的GC策略。 - 常见的GC算法有:标记-清除、复制、标记-整理、分...

    JVM图解-JVM指令-JVM原型图.rar

    - JVM负责自动管理内存,通过垃圾收集机制回收不再使用的对象所占用的空间。 - 常见的垃圾收集算法有标记-清除、复制、标记-整理和分代收集等。 4. **类加载机制**: - 双亲委派模型:当一个类加载器需要加载类...

    JVM--内存与垃圾回收篇1

    Java虚拟机(JVM)是Java程序运行的核心,它的内存管理和垃圾回收机制对于程序的高效运行至关重要。在本文中,我们将深入探讨JVM的类加载子系统及其在内存管理中的作用。 类加载子系统,也被称为Class Loader ...

    java高级之垃圾回收机制

    其中,垃圾回收机制(Garbage Collection, GC)是Java虚拟机(JVM)的一项重要特性,它能够自动检测并回收不再使用的对象占用的内存空间,从而有效避免了内存泄漏问题。本文将详细介绍Java中的垃圾回收机制及其工作原理...

    Java+JVM+垃圾回收机制

    ### Java+JVM+垃圾回收机制 #### 一、哪些垃圾是需要回收的? 在Java虚拟机中,垃圾回收机制负责自动管理内存空间,确保不再使用的对象能够被及时释放,以便于新对象的分配。这一过程的核心在于识别哪些对象不再...

    JVM内存分配与垃圾回收详解

    垃圾回收是 JVM 中非常重要的一个概念,它是 JVM 用来管理 Java 堆中对象的生命周期的机制。垃圾回收器会定期地对 Java 堆中对象进行扫描,标记出不再使用的对象,并将其回收,以释放出更多的内存空间。 垃圾收集...

    细述 Java垃圾回收机制→How Java Garbage Collection Works- - Android 1

    Java垃圾回收机制是Java虚拟机(JVM)中的一种自动管理内存的机制,它可以自动地将不再使用的对象从内存中回收,以释放更多的内存空间供其他对象使用。本文将详细介绍Java垃圾回收机制的工作原理、各个阶段的执行...

    Java性能调优--关于垃圾回收机制的分析和指导

    Java性能调优,特别是关于垃圾回收...总结来说,Java性能调优中的垃圾回收机制分析是一项深度工作,需要深入理解JVM的内存管理,识别并避免内存泄漏,以及合理调整垃圾收集策略,以实现更高效、更稳定的Java应用程序。

    JVM虚拟机垃圾回收机制图谱说明

    JVM虚拟机垃圾回收机制图谱说明

    Java垃圾回收机制总结

    Java垃圾回收机制是Java虚拟机(JVM)中的一种机制,用于防止内存泄露和有效地使用空闲的内存。垃圾回收机制的主要目的是为了回收无用的对象占用的内存空间,使该空间可被程序再次使用。 垃圾回收机制的算法有多种...

    Java堆的管理--垃圾回收

    在Java编程语言中,内存管理是其核心特性之一,尤其是自动垃圾回收机制,极大地简化了开发人员的工作,避免了C++等语言中常见的内存泄漏问题。本文将深入探讨Java堆的管理,特别是垃圾回收(Garbage Collection, GC...

Global site tag (gtag.js) - Google Analytics