JVM架构(010)_什么是老生代的标记算法

转载 2016年08月29日 16:52:46

1、什么是老生代的标记算法

了解堆内存看这里:java堆内存是什么样的 
了解java垃圾回收看这里:java垃圾回收机制是什么 
所谓标记算法(Mark),分为多种,最简单直观的即标记-清除算法(Mark-Sweep)。即将认定为可回收的内存做一个标记,然后统一将被标记的清理,算法图解如下:

这里写图片描述

算法过程: 
1. 先判定对象是否可回收,对其标记。 
2. 统一回收(简单地删除对垃圾对象的内存引用)。

标记-清除算法十分简单直观,且容易实现和理解。但是有一个很严重的问题,内存空间碎片化,这显然是不能接收的,所以Java对老生代的垃圾处理采用的是标记-紧凑算法

2、什么是老生代的标记-紧凑算法

所谓标记-紧凑算法(Mark-Compact),即在标记-清除算法的基础上,增加了碎片整理这一步,算法图解如下:

这里写图片描述

算法过程:

  1. 标记:标记可回收对象(垃圾对象)和存活对象。
  2. 紧凑(也称“整理”):将所有存活对象向内存开始部位移动,称为内存紧凑(相当于碎片整理)。
  3. 清理剩余内存空间

可以看出,内存的碎片整理虽然会损失一定的效率,但是大大减少了内存的碎片化程度,更有利于内存的使用和分配

Java千百问_07JVM架构(010)_什么是老生代的标记算法

所谓标记算法(Mark),分为多种,最简单直观的即标记-清除算法(Mark-Sweep)。即将认定为可回收的内存做一个标记,然后统一将被标记的清理,算法图解如下:算法过程: 1. 先判定对象是否可回...

JAVA虚拟机新生代,老生代的分析

一个这样的代码文件 public class Hello{ public static void main(String[] args) { Object obj = new Object...

JVM学习笔记-对象标记算法

上一篇文章了解的Java引用的四种模式,接下来将为大家讲解对象标记算法。当一个对象不再被引用时,该对象就变得useless了,其实及时它目前没有任何一个reference的target,并且认为它今后...

JVM垃圾收集器----垃圾标记、回收算法

一、垃圾收集器          在Java中,程序员不需要去关心内存动态分配和垃圾回收的问题,这一切都交给了JVM来处理。顾名思义,垃圾回收就是Java虚拟机提供的能力,用于在空闲时间以不定时的方式...
  • ljheee
  • ljheee
  • 2016年08月18日 23:22
  • 888

jvm:gc算法——复制、标记清除

1、复制算法: 年轻代使用这种算法进行gc。将可用的内存按容量划分为大小相等的两块(from,to),每次只是用其中一块(总有一块是空的【to区域】)。当这一苦熬的内存用完了,就将还存活着的对象复...

jvm垃圾收集(标记-清除,复制,标记-整理,分代)算法

1. 标记 - 清除算法  标记清除算法是最基础的收集算法,其他收集算法都是基于这种思想。标记清除算法分为“标记”和“清除”两个阶段:首先标记出需要回收的对象,标记完成之后统一清除对象。 它的主...

深入理解JVM03--垃圾收集算法(“标记-清除”,“复制”,“标记-整理”,“分代收集”)

垃圾收集基础 Java 语言的一大特点就是可以进行自动垃圾回收处理,而无需开发人员过于关注系统资源,例如内存资源的释放情况。自动垃圾收集虽然大大减轻了开发人员的工作量,但是也增加了软件系统的负担。 拥...

jvm垃圾收集(标记-清除,复制,标记-整理,分代)算法

1. 标记 - 清除算法  标记清除算法是最基础的收集算法,其他收集算法都是基于这种思想。标记清除算法分为“标记”和“清除”两个阶段:首先标记出需要回收的对象,标记完成之后统一清除对象。...

JVM-GC算法_标记清除算法

楼主挺辛苦,觉得不错,就赞一下or评价一下 O(∩_∩)O

JVM内存管理------GC算法精解(五分钟让你彻底明白标记/清除算法)

相信不少猿友看到标题就认为LZ是标题党了,不过既然您已经被LZ忽悠进来了,那就好好的享受一顿算法大餐吧。不过LZ丑话说前面哦,这篇文章应该能让各位彻底理解标记/清除算法,不过倘若各位猿友不能在五分钟内...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JVM架构(010)_什么是老生代的标记算法
举报原因:
原因补充:

(最多只允许输入30个字)