当前位置: 首页 > news >正文

JVM面试题:(三)GC和垃圾回收算法

GC:

在这里插入图片描述

垃圾回收算法:

GC最基础的算法有三种: 标记 -清除算法、复制算法、标记-压缩算法,我们常用的垃圾回收器一般
都采用分代收集算法。

标记 -清除算法,“标记-清除”(Mark-Sweep)算法,如它的名字一样,算法分为“标记”和“清
除”两个阶段:首先标记出所有需要回收的对象,在标记完成后统一回收掉所有被标记的对象。

复制算法,“复制”(Copying)的收集算法,它将可用内存按容量划分为大小相等的两块,每次
只使用其中的一块。当这一块的内存用完了,就将还存活着的对象复制到另外一块上面,然后
再把已使用过的内存空间一次清理掉。

标记-压缩算法,标记过程仍然与“标记-清除”算法一样,但后续步骤不是直接对可回收对象进行
清理,而是让所有存活的对象都向一端移动,然后直接清理掉端边界以外的内存

分代收集算法,“分代收集”(Generational Collection)算法,把Java堆分为新生代和老年代,
这样就可以根据各个年代的特点采用最适当的收集算法。

分代回收:

在这里插入图片描述
对象优先分配在Eden区,如果Eden区没有足够的空间时,虚拟机执行一次Minor GC。
大对象直接进入老年代(大对象是指需要大量连续内存空间的对象)。这样做的目的是避免在

Eden区和两个Survivor区之间发生大量的内存拷贝(新生代采用复制算法收集内存)。
长期存活的对象进入老年代。虚拟机为每个对象定义了一个年龄计数器,如果对象经过了1次

Minor GC那么对象会进入Survivor区,之后每经过一次Minor GC那么对象的年龄加1,知道达
到阀值对象进入老年区。
动态判断对象的年龄。如果Survivor区中相同年龄的所有对象大小的总和大于Survivor空间的
一半,年龄大于或等于该年龄的对象可以直接进入老年代。
空间分配担保。每次进行Minor GC时,JVM会计算Survivor区移至老年区的对象的平均大小,
如果这个值大于老年区的剩余值大小则进行一次Full GC,如果小于检查

HandlePromotionFailure设置,如果true则只进行Monitor GC,如果false则进行Full GC。

垃圾回收器:

在这里插入图片描述
新生代的收集器包括Serial、PraNew、Parallel Scavenge,回收老年代的收集器包括Serial Old、Parallel Old、CMS,还有用于回收整个Java堆的G1收集器。
在这里插入图片描述

http://www.lryc.cn/news/190001.html

相关文章:

  • hive建表指定列分隔符为多字符分隔符实战(默认只支持单字符)
  • android.app.RemoteServiceException: can‘t deliver broadcast
  • 信创办公–基于WPS的EXCEL最佳实践系列 (单元格与行列)
  • VsCode同时编译多个C文件
  • Android绑定式服务
  • 系统韧性研究(1)| 何谓「系统韧性」?
  • 使用Perl脚本编写爬虫程序的一些技术问题解答
  • SAP内部转移价格(利润中心转移价格)的条件
  • WRF如何批量输出文件添加或删除文件名后缀
  • Ubuntu右上角不显示网络的图标解决办法
  • AM@数列极限
  • Vue-2.3v-model原理
  • ​左手 Serverless,右手 AI,7 年躬身的古籍修复之路
  • 计算mask的体素数量
  • VR全景营销颠覆传统营销,让消费者身临其境
  • FreeRTOS学习笔记——四、任务的定义与任务切换的实现
  • js 之让人迷惑的闭包 03
  • 10月10日上课内容 Docker--harbor私有仓库部署与管理
  • Java 序列化和反序列化为什么要实现 Serializable 接口
  • vite+vue3+ts中使用require.context | 报错require is not defined | 获取文件夹中的文件名
  • C#(Csharp)我的基础教程(四)(我的菜鸟教程笔记)-Windows项目结构分析、UI设计和综合事件应用的探究与学习
  • Flink: Only supported for operators
  • NSIDC定义的海冰相关概念
  • 【码银送书第八期】《Python数据挖掘:入门进阶与实用案例分析》
  • 微信小程序底部tabBar不显示图标
  • PostgreSQL基操之角色、表空间、数据库与表
  • 【算法|滑动窗口No.1】leetcode209. 长度最小的子数组
  • 11_博客管理系统_实现过程
  • 安防视频监控平台EasyCVR集成到ios系统不能播放是什么原因?如何解决?
  • hutool实现文件上传与下载