首页 > 编程语言 >11.垃圾回收相关算法

11.垃圾回收相关算法

时间:2022-08-21 12:24:24浏览次数:51  
标签:11 标记 对象 回收 算法 垃圾 内存

目录

11.1 垃圾回收概述

1. 什么是垃圾

垃圾是指在运行程序中没有任何指针指向的对象,这个对象就是需要被回收的垃圾。

如果不及时对内存中的垃圾进行清理,那么,这些垃圾对象所占的内存空间会一直保留到应用程序结束,被保留的空间无法被其他对象使用。甚至可能导致内存溢出。

2. 为什么需要GC

对于高级语言来说,一个基本认知就是如果不进行垃圾回收,内存迟早都会被消耗完,因为不断地分配内存空间而不进行回收,就好像不停地生产生活垃圾而从来不打扫一样。

除了释放没用的对象,垃圾回收也可以清除内存里的记录碎片,碎片整理将所占用的堆内存移到堆的一端,以便JVM将整理出的内存分配给新的对象

随着应用程序所应付的业务越来越庞大、复杂,用户越来越多,没有GC就不能保证应用程序的正常进行。而经常造成STW的GC又跟不上实际的需求,所以才会不断地尝试对GC进行优化。

11.2 垃圾回收相关算法

1.标记阶段:引用计数算法

对象存活判断:

在堆里存放着几乎所有的Java对象实例,在GC执行垃圾回收之前,首先需要区分出内存中哪些是存活对象,哪些是已经死亡的对象。只有被标记为已经死亡的对象,GC才会在执行垃圾回收时,释放掉其所占用的内存空间,因此这个过程我们可以称为垃圾标记阶段

那么在JVM中究竟是如何标记一个死亡对象呢?简单来说,当一个对象已经不再被任何存活对象继续引用时,就可以宣判为已经死亡。

判断对象存活一般有两种方式:引用计数算法可达性分析算法

引用计数算法(Reference Counting)比较简单,对每个对象保存一个整形的引用计数器属性,用于记录对象被引用情况。

对于一个对象A,只要有任何一个对象引用了A,则A的引用计数器就加1;当引用失效时,引用计数器就减1;只要对象A的引用计数器的值为0,即表示对象A不可能再被使用,可进行回收。

优点:

实现简单,垃圾对象便于辨识;判定效率高,回收没有延迟性。

缺点:

它需要单独的字段存储计数器,这样的做法增加了存储空间的开销

每次赋值都需要更新计数器,伴随着加法和减法操作,这样增加了时间开销

引用计数器有一个严重的问题,即无法处理循环引用的情况,这是一条致命缺陷,导致在java的垃圾回收器中没有使用这类算法。

循环引用

标签:11,标记,对象,回收,算法,垃圾,内存
From: https://www.cnblogs.com/leizia/p/16609777.html

相关文章

  • 《GB8921-2011》PDF下载
    《GB8921-2011磷肥及其复合肥中226镭限量卫生标准》PDF下载《GB8921-2011》简介本标准规定了磷肥及其复合肥(以下合称含磷肥料)中226Ra的限量卫生指标及其相应的采样、......
  • 11.3 垃圾回收相关概念
    目录11.3.1System.gc()的理解11.3.2内存溢出与内存泄漏内存溢出(OOM)内存泄漏(MemoryLeak)11.3.3StopTheWorld11.3.4垃圾回收的并行与并发并发(Concurrent)并行(Parallel)并......
  • 《GB27951-2011》PDF下载
    《GB27951-2011皮肤消毒剂卫生要求》PDF下载《GB27951-2011》简介本标准规定了皮肤消毒剂的技术要求、试验方法、使用方法、标签和说明书以及使用注意事项;本标准适用......
  • 《GB17589-2011》PDF下载
    《GB17589-2011X射线计算机断层摄影装置质量保证检测规范》PDF下载《GB17589-2011》简介本标准规定了对医用X射线计算机断层摄影装置以质量保证为目的进行检测的方法及......
  • 《GB6246-2011》PDF下载
    《GB6246-2011消防水带》PDF下载《GB6246-2011》简介本标准规定了消防水带的型号规格、性能要求、试验方法、检验规则以及标志、包装、运输、使用与维护;本标准适用于......
  • 《GB5135.21-2011》PDF下载
    《GB5135.21-2011自动喷水灭火系统第21部分:末端试水装置》PDF下载《GB5135.21-2011》简介GB5135的本部分规定了自动喷水灭火系统用末端试水装置的术语和定义、分类、......
  • Day11-HTML5
    H5新增标签:H5新增的语义化标签:(双标记) 1.header整个页面的头部 2.main主要部分ie不兼容 3.section页面中的一个区块 4.footer结尾区 5.nav导航链接 6.art......
  • 《GB27900-2011》PDF下载
    《GB27900-2011防员呼救器》PDF下载《GB27900-2011》简介本标准规定了消防员呼救器的术语和定义、型号、技术要求、试验方法、检验规则、标志、包装、运输和贮存;本标......
  • 《GB27901-2011》PDF下载
    《GB27901-2011移动式消防排烟机》PDF下载《GB27901-2011》简介本标准规定了移动式消防排烟机的术语和定义、型号、技术要求、试验方法、检验规则以及标志、包装、贮存......
  • 《GB4452-2011》PDF下载
    《GB4452-2011室外消火栓》PDF下载《GB4452-2011》简介本标准规定了室外消火栓的术语和定义、产品分类、技术要求、试验方法、检验规则、标志和包装;本标准适用于消......