JVM学习笔记GC——JAVA预言的垃圾回收

Posted 嘉然今天吃甚么

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JVM学习笔记GC——JAVA预言的垃圾回收相关的知识,希望对你有一定的参考价值。

一、垃圾回收概述

1 什么是GC,为何要GC?


2 早期垃圾回收


3 Java的垃圾回收机制



二、垃圾回收的相关算法

1 垃圾回收算法的概述

  垃圾回收分为标记阶段和清除阶段,标记阶段找垃圾,清除阶段清掉找到的垃圾。

  标记阶段使用的算法有引用计数算法、可达性算法。

  清除阶段使用的算法有标记-清除算法、复制算法、标记-压缩算法、分代收集算法、增量收集算法、分区算法。

2 标记阶段:引用计数算法


3 标记阶段:可达性分析算法





4 对象的finalization机制





  有趣的代码——对象复活记

public class Test 

	public static Test test;

	@Override
	protected void finalize() throws Throwable 
		super.finalize();
		System.out.println("finalizing...");
		test = this;
	

	public static void main(String[] args) throws InterruptedException 

		test = new Test();

		test = null;
		System.gc();
		Thread.sleep(500);

		if (test != null) 
			System.out.println("I am alive:)");
		 else 
			System.out.println("I am gg:(");
		

		test = null;
		System.gc();

		if (test != null) 
			System.out.println("I am alive:)");
		 else 
			System.out.println("I am gg:(");
		

	


5 清除阶段:标记 - 清除算法



6 清除阶段:复制算法



  我们很容易想到,幸存者区便使用的是复制算法。因为新生代死亡率高,导致复制算法的缺点不明显,而优势倍增。

7 清除阶段:标记 - 压缩算法




8 对比清除阶段三种算法

以上是关于JVM学习笔记GC——JAVA预言的垃圾回收的主要内容,如果未能解决你的问题,请参考以下文章

JVM垃圾回收的四大算法

JVM垃圾回收的四大算法

Java GC的工作原理详解

JVM学习--垃圾回收器

JVM的常用的调优策略和垃圾回收算法及Tomcat的常用调优参数

JAVA笔记之GC部分