本文介绍: JVM就是Java虚拟机,JVM的内回收对其原理的认识也是很有必要的,当底层系统出现内存溢出或者内存泄漏处理系统很有必要的。主要解决标记清除算法内存碎片化的问题,它适合老年代对象回收特性(长期存活对象),如Parallel Old垃圾收集器吞吐量)。最早出现也是最基础的垃圾收集算法,后续所有的垃圾收集算法都是基于它的,是用于在老年代垃圾回收算法,常见如。如果存活对象比较多的或比较大,复制效率比较低。堆划分不同区域,按照对象年龄分配到不同区域存储针对不同区域使用不同回收算法。

JVM就是Java虚拟机,JVM的内回收对其原理的认识也是很有必要的,当底层系统出现内存溢出或者内存泄漏处理系统很有必要的。

JVM 内存回收算法有哪些

链接JVM之内存回收算法_jvm内存回收-CSDN博客

一、分代收集

1.分代收集理论

分代收集理论分别是:

    其中上述前2个假说共同奠定了常用垃圾收集器的一致设计原则收集器应该java划分不同区域,按照对象年龄分配到不同区域存储针对不同区域使用不同回收算法。
    而跨代引用解决存活算法效率问题,即 可达性分析算法对于少量跨代引用不去跨代扫描整个区域。而是使用全局数据结构remember set管理这些少量跨代引用的对象。

2.垃圾收集

   由于分代收集理论常用的垃圾回收器都会将java分为多个区域(新时代和老年代),则针对不同区域会有不同的垃圾收集,常见如下

二、垃圾收集算法

1. 标记清除算法

最早出现也是最基础的垃圾收集算法,后续所有的垃圾收集算法都是基于它的,是用于在老年代的垃圾回收算法,常见CMS垃圾回收器(低延迟)。
算法原理

  1. 标记标记出所有需要回收的对象;
  2. 清除统一回收掉所有标记的对象。

在这里插入图片描述

代价:对大量可回收对象时执行效率低;会产生大量的内存空间碎片

2. 复制算法

主要是为了解决标记清除算法对大量可回收对象执行效率低的问题,它适合用于时代收集算法(对象朝生夕死特性)。
算法原理

  1. 可用内存按容量划分大小相等的2块;
  2. 将还存活对象复制到一个空间上;
  3. 将之前使用过的内存空间一次清理

在这里插入图片描述

代价空间浪费,将可用空间缩小为原来一半;如果存活对象比较多的或比较大,复制效率就比较低。

3. 标记-整理算法

主要解决标记清除算法内存碎片化的问题,它适合老年代对象回收特性(长期存活对象),如Parallel Old垃圾收集器吞吐量)。
算法原理:

  1. 标记,标记需要回收对象;
  2. 整理,让存活对象都向内存另一端移动;
  3. 清理直接清理边界以外的内存.

在这里插入图片描述

代价:收集花费时间相对于标记清除算法会慢一些。

原文地址:https://blog.csdn.net/weixin_44797327/article/details/134751560

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_44636.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注