JVM-GC总结-算法

垃圾收集器对堆进行回收前,会先确定对象是在存活还是已经死去

下面是俩种判定对象是否存活的算法.

对象存活算法

引用计数算法

给对象中添加一个引用计数器,每当有一个地方引用它时,计数器就加1;当引用失效时,计数器值就减1;任何时刻计数器为0的对象就是不可能在被使用的.此算法的问题是无法解决对象之间循环引用的问题.

根搜索算法

主流的编程语言都是使用根搜索算法(GC Roots Tracing)判定对象是否存活的.这个算法的思路是通过一系列名为GC Roots的对象作为起始点,从这些节点开始向下搜素,搜索锁走过的路径成为引用链(Refernce Chain),当一个对象到GC Roots没有任何引用链相连时则此对象是不可用的.

GC Roots对象包括下面几种:

Ø  虚拟机栈(栈帧中的本地变量表)中引用的对象

Ø  方法区中的类静态属性引用的对象

Ø  方法区中的常量引用的对象

Ø  本地方法栈中JNI(native)的引用对象

垃圾回收进行时会从这些GC Roots开始查找被引用的对象,这样会形成一颗颗以GC Roots为根的对象树,在这些对象树上的对象都是当前系统运行所需要的对象,不能被垃圾回收.



垃圾收集算法:

标记-清除(Mark-Sweep)

 

垃圾收集基础算法,分为俩个阶段:首先根据根搜索算法标记出所有需要回收的对象,在标记完成后统一回收掉所有被标记的对象.

缺点:此算法会暂停整个应用,会产生内存碎片.

复制(copying)

此算法将可用内存按容量分为大小相等的俩块,每次只使用其中的一块,当着一块的内存用完了,将还存活着的对象复制到另外一块,然后把已使用过的内存空间一次清理掉.

优点:不会出现碎片的问题

缺点:需要俩倍的内存, 在对象存活率较高时要执行较多的复制操作,效率会变低,并且需要额外的空间进行分配担保.

商业虚拟机采用这种复制收集算法来回收新生代,新生代中的对象98%是朝生夕死的,所以不需要安装1:1的比例来划分内存,而是将内存划分为一块较大的Eden和俩个较小的Survivor空间,每次使用Eden和其中的一个Survivor,当回收时将Eden和Survivor中还存活的对象一次性地拷贝到另外一个Survivor空间,最后清理掉Eden和刚才的Survivor.HotSpot默认Eden和Survivor的大小比例是8:1.

标记-整理(Mark-Compact)

分俩阶段:第一阶段是从根节点开始标记所有被引用对象,第二个阶段遍历了整个堆,让所有存活的对象都向一端移动,最后直接清理掉边界以外的内存.

 

分代收集算法

根据对象的存活周期的不同将内存划分为几块,一般是把java堆分为新生代和老年代,这样就可以根据各个年代的特点采用最适当的收集算法,在新生代中每次收集都有大批对象死去,只有少量存活,采用复制算法.老年代中因为对象存活率高,没有额外的空间进行分配担保,必须使用标记-清理或标记-整理算法.

标题基于SpringBoot+Vue的社区便民服务平台研究AI更换标题第1章引言介绍社区便民服务平台的研究背景、意义,以及基于SpringBoot+Vue技术的研究现状和创新点。1.1研究背景与意义分析社区便民服务的重要性,以及SpringBoot+Vue技术在平台建设中的优势。1.2国内外研究现状概述国内外在社区便民服务平台方面的发展现状。1.3研究方法与创新点阐述本文采用的研究方法和在SpringBoot+Vue技术应用上的创新之处。第2章相关理论介绍SpringBoot和Vue的相关理论基础,以及它们在社区便民服务平台中的应用。2.1SpringBoot技术概述解释SpringBoot的基本概念、特点及其在便民服务平台中的应用价值。2.2Vue技术概述阐述Vue的核心思想、技术特性及其在前端界面开发中的优势。2.3SpringBoot与Vue的整合应用探讨SpringBoot与Vue如何有效整合,以提升社区便民服务平台的性能。第3章平台需求分析与设计分析社区便民服务平台的需求,并基于SpringBoot+Vue技术进行平台设计。3.1需求分析明确平台需满足的功能需求和性能需求。3.2架构设计设计平台的整体架构,包括前后端分离、模块化设计等思想。3.3数据库设计根据平台需求设计合理的数据库结构,包括数据表、字段等。第4章平台实现与关键技术详细阐述基于SpringBoot+Vue的社区便民服务平台的实现过程及关键技术。4.1后端服务实现使用SpringBoot实现后端服务,包括用户管理、服务管理等核心功能。4.2前端界面实现采用Vue技术实现前端界面,提供友好的用户交互体验。4.3前后端交互技术探讨前后端数据交互的方式,如RESTful API、WebSocket等。第5章平台测试与优化对实现的社区便民服务平台进行全面测试,并针对问题进行优化。5.1测试环境与工具介绍测试
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值