`

java gc过程

    博客分类:
  • java
gc 
阅读更多
package SRC;

/*如果一个对象在根搜索后发现没有与GC Roots相连接,那它会被第一次标记,同时被筛选,
* 筛选的条件是此对象是否有必要指向finalize()方法。1,当对象没有重写finalize方法或
* 重写了finalize方法已经被虚拟机调用过了,虚拟机将这两种视为没有必要执行
* 重写了finalize方法的对象会被放置在F-Queue的队列中,并在稍后由一条由虚拟机自动建立
*,低优先级的Finalizer线程去执行,稍后GC将对F-Queue中的对象进行第二次小规模标记,除非
*对象在finalize方法中成功拯救自己,如引用重新与对象关联,否则将会被GC回收
*/
public class FinalizeEscapeGC {

	public static FinalizeEscapeGC fe = null;
	
	public void isAlive(){
		System.out.println("yes,i an still alive:");
	}
   /*
    * 重写了finalize()方法,将会被放入F-queue队列中
    * 
    */
   
	@Override
	protected void finalize() throws Throwable{
		super.finalize();
		System.out.println("finalize method executed");
		//对象重新与引用关联,对象不会回收
		this.fe = this;
	}
	
	public static void main(String[] args) throws Throwable{
		fe = new FinalizeEscapeGC();
		fe = null;
		
		
		System.gc();
		Thread.currentThread().sleep(500);
		//此时对象还活着,第二次标记时它将从F-Queue队列中移除
		if(fe!=null){
			fe.isAlive();
		}else{
			System.out.println("no, i am dead:");
		}
		fe = null;
		System.gc();
		Thread.sleep(500);
		//对象面临下一次回收,因为finalize方法已经执行,因此不会放在F-Queue中,所以不会执行finalize方法
		if(fe!=null){
			fe.isAlive();
		}else{
			System.out.println("no, i am dead:");
		}
	}
}
分享到:
评论

相关推荐

    Java GC的过程

    NULL 博文链接:https://wangwengcn.iteye.com/blog/1606192

    【java】10分钟,了解GC过程

    【java】10分钟,了解GC过程

    成为JavaGC专家(4)

    在第一篇文章成为JavaGC专家PartI—深入浅出Java垃圾回收机制中我们学习了不同GC算法的执行过程,GC如何工作,新生代及老年代的基本概念,在JDK7中你应该了解的5种GC类型以及他们的性能如何。在第二篇文章成为JavaGC...

    成为JavaGC专家上(1)—深入浅出Java垃圾回收机制

    对于Java开发人员来说,了解垃圾回收机制(GC)有哪些好处呢?首先可以满足作为一名软件工程师的求知欲,其次,深入了解GC如何工作可以...这是成为JavaGC专家系列文章的第一篇,本篇主要针对GC机制进行介绍,在下一篇

    成为JavaGC专家上(3)—深入浅出Java垃圾回收机制

    本文是成为JavaGC专家系列文章的第三篇。在第一篇《》中我们学习了不同GC算法的执行过程,GC是如何工作的,什么是新生代和老年代,你应该了解的JDK7中的5种GC类型,以及这5种类型对于应用性能的影响?在第二篇《》,...

    VM调优实战指南:GC与性能优化

    在JVM的运行过程中,垃圾收集(GC)和性能调优是两个重要的方面。本文将详细介绍JVM的GC调优和性能调优方法,并通过具体例子来加深理解。 一、GC调优 1. 理解GC GC是JVM的一个重要特性,它负责自动回收不再使用的...

    Java后端面试问题整理.docx

    • 熟悉JVM内存区域,常用引用类型,垃圾回收机制、算法以及常见的GC垃圾收集器(Serial、ParNew、Parallel Scavenge、Serial Old、Parallel Old、CMS、G1) • 熟悉常用IO模型(BIO、NIO、AIO),熟悉JVM类加载过程与...

    华为java培训讲义

    Java的运行过程: 编译:生成可执行文件,如C++中利用g++生成a.out,效率高,但不跨平台 解释:解释器把源文件逐行解释,跨平台但效率不高 在java中:先编译后解释,把.java文件编译成.class字节码文件 Java...

    JVM体系结构与GC调优

    Java面试中必问的知识点JVM和GC调优,本PPT中详细介绍了JVM的体系结构以及Java GC的详细过程,是我目前看过的比较到位的资料

    GCViewer -1.36.

    GCViewer 1.36. 支持 JDK 1.8. 性能测试排查定位问题,分析调优过程中,会遇到要分析gc日志,人肉分析gc日志有时比较困难,相关图形化或命令行工具可以有效地帮助辅助分析。

    java基础学习笔记 java整合技术 java工具类.rar

    健壮性:java的健壮性与自动垃圾回收机制有关,自动垃圾回收机制简称GC机制,java语言运行过程中产生的垃圾是自动回收的,不需要程序员关心。 可移植性:java程序可以做到一次编译,到处运行。在Windows操作系统上...

    成为JavaGC专家上(2)—深入浅出Java垃圾回收机制

    是搞清楚JVM如何执行GC的过程,例如,我们可以查明:1.何时一个新生代中的对象被移动到老年代时,所花费的时间。2.Stop-the-world何时发生的,持续了多长时间。GC监控是为了鉴别JVM是否在高效地执行GC,以及是否有...

    Java笔试题目.doc

    数据库索引的优点和缺点 一、为什么要创建索引呢(优点)? 这是因为,创建索引可以大大提高系统的性能。 ...程序员可以手动执行System.gc(),通知GC运行,但是Java语言规范并不保证GC一定会执行。

    corejava基础重要知识点总结

    面向过程:需要人站在计算机的角度去思考问题 面向对象:需要人拿着代码模拟实现生活 类:一组类型相同事物高度抽象之后的集合概念 创建对象的模板 -》 class 对象:类的一个具体的实例 例子: 人和范冰冰...

    JAVA架构知识库整理 JAVA架构知识 Java架构师 Java 架构师必备

    MinorGC 的过程(复制->清空->互换)1: eden, servicorFrom 制到 ServicorTo, 年龄+1..2:清空eden, servicorFrom..3: ServicorTo 和 ServicorFrom互换,2.3.2. 老年代.2.3.3. 永久代2.3.3.1. JAVA8 与元数据.2.4. 垃圾...

    面向GC的Java编程

    Java程序员在编码过程中通常不需要考虑内存问题,JVM经过高度优化的GC机制大部分情况下都能够很好地处理堆(Heap)的清理问题。以至于许多Java程序员认为,我只需要关心何时创建对象,而回收对象,交给GC来做吧!甚至...

    Java面试基础测试题及答案

    4、 Java的核心机制是什么?并介绍其核心机制 1、JVM和GC 2、Jvm:在一台计算机上由软件或者硬件模拟的计算机(读取字节码代码的Cpu)。...垃圾收集在程序运行的过程中自动进行,程序员无法控制和干涉

Global site tag (gtag.js) - Google Analytics