From 2752d679b708f0749617a5ddd080b519e8f199b0 Mon Sep 17 00:00:00 2001 From: CyC2018 Date: Tue, 23 Apr 2019 14:58:29 +0800 Subject: [PATCH] auto commit --- docs/notes/Java 虚拟机.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/notes/Java 虚拟机.md b/docs/notes/Java 虚拟机.md index 56db4110..c5d0aaf8 100644 --- a/docs/notes/Java 虚拟机.md +++ b/docs/notes/Java 虚拟机.md @@ -226,9 +226,10 @@ obj = null;

+ 在标记阶段,程序会检查每个对象是否为活动对象,如果是活动对象,则程序会在对象头部打上标记。 -在清除阶段,会进行对象回收并取消标志位,另外,还会判断回收后的分块与前一个空闲分块是否连续,若连续,会合并这两个分块。回收对象就是把对象作为分块,连接到被称为“空闲链表”的单向链表,之后进行分配时只需要遍历这个空闲链表,就可以找到分块。 +在清除阶段,会进行对象回收并取消标志位,另外,还会判断回收后的分块与前一个空闲分块是否连续,若连续,会合并这两个分块。回收对象就是把对象作为分块,连接到被称为 “空闲链表” 的单向链表,之后进行分配时只需要遍历这个空闲链表,就可以找到分块。 在分配时,程序会搜索空闲链表寻找空间大于等于新对象大小 size 的块 block。如果它找到的块等于 size,会直接返回这个分块;如果找到的块大于 size,会将块分割成大小为 size 与 (block - size) 的两部分,返回大小为 size 的分块,并把大小为 (block - size) 的块返回给空闲链表。