Java垃圾回收机制中对象引用遍历的实现原理

问题描述

有没有大牛给详细解释下Java垃圾回收机制中对象引用遍历的实现原理,java回收机制中的有向图是何时建立、如何建立,有向图有几个?

解决方案

解决方案二:
垃圾回收在jvm中并没有特定的算法,不同的人可以有不同的实现,未必会使用有向图譬如一种实现可以这样,在没有内存可分配时,直接抛出OutOfMemory都是符合规范的
解决方案三:
该回复于2011-04-07 11:01:48被版主删除
解决方案四:
这个要讲的话就多了
解决方案五:
有本书好像叫深入JVM,你可以找一下,里面解释的很详细
解决方案六:
有深入理解JVM的大牛们给我解释下这段代码为什么会出现这个情况么?packagetest;importjava.util.ArrayList;importjava.util.Iterator;importjava.util.List;importjava.util.Vector;@SuppressWarnings("all")publicclassTest{inti;publicstaticvoidmain(String[]args){Vectorv=newVector(10);for(inti=1;i<100;i++){Testo=newTest();o.i=11;v.add(o);//o.i=10;o=null;}Iterator<Object>i=v.iterator();while(i.hasNext()){System.out.println(String.valueOf(((Test)i.next()).i));}}}我在循环中想vector中添加Test,然后将test置为空,可是最后迭代时,test对象中的i居然还有值。这是怎么回事?
解决方案七:
仔细体会下引用就明白了引用5楼zheng12tian的回复:

有深入理解JVM的大牛们给我解释下这段代码为什么会出现这个情况么?packagetest;importjava.util.ArrayList;importjava.util.Iterator;importjava.util.List;importjava.util.Vector;@SuppressWarnings("all")publicc……

解决方案八:
该回复于2011-04-07 13:52:11被版主删除

时间: 2024-09-10 14:45:09

Java垃圾回收机制中对象引用遍历的实现原理的相关文章

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

对于Java开发人员来说,了解垃圾回收机制(GC)有哪些好处呢?首先可以满足作为一名软件工程师的求知欲,其次,深入了解GC如何工作可以帮你写出更好的Java应用. 这仅仅代表我个人的意见,但我坚信一个精通GC的人往往是一个好的Java开发者.如果你对GC的处理过程感兴趣,说明你已经具备较大规模应用的开发经验.如果你曾经想过如何正确的选择GC算法,那意味着你已经完全理解你所开发的应用的特点.当然,我们不能以偏概全,这不能作为评价一个好的开发人员的共通标准.但是,我要说的是,深入理解GC是成为一名伟

细述 Java垃圾回收机制→Java Garbage Collection Introduction

计划写一个介绍Java垃圾回收基础的系列文章,共分四部分: Java垃圾回收简介 Java垃圾回收器是如何工作的? 各种类型的Java垃圾回收器 Java垃圾回收的监控和分析 本文是这个系列的第一篇文章,这篇文章将会介绍一些基本术语,如:JDK,JVM,JRE,HotSpot VM,以及理解JVM的架构和Java堆内存结构.在开始学习Java垃圾回收机制之前确实有必要了解一下这些基本东西. 关键的Java术语 Java API–一个帮助程序员创建Java应用的打包好的库集合 Java Devel

细述 Java垃圾回收机制→How Java Garbage Collection Works?

这是垃圾回收机制系列文章的第二篇.希望您已经读过了第一部分Java垃圾回收简介. Java垃圾回收是一个自动运行的管理程序运行时使用的内存的进程.通过GC的自动执行JVM将程序员从申请和释放内存的繁重操作中解放出来. Java垃圾回收GC初始化 作为一个自动执行的进程,程序员不需要在代码中主动初始化GC.Java提供了System.gc()和Runtime.gc()这两个hook来请求JVM调用GC进程. 尽管要求系统机制给程序员提供调用GC的机会,但是实际上这是由JVM负责决定的.JVM可以选

收集器-java垃圾回收机制怎么回收变量

问题描述 java垃圾回收机制怎么回收变量 如下: 1.Object aobj=new Object() 2.Object bobj = new Object() 3. Object cobj = new Object() 4.aobj = bobj; 5.aobj = cobj; 6.cobj = null; 7.aobj = null; 那么第几行的obj符合垃圾收集器的收集标准. A:1 B:2 C:3 D:4 E:5 F:6 G:7 垃圾收集器的收集标准是什么? 是不是不引用了就可以收集

java垃圾回收机制-java堆中方法区中的内容会被删除么

问题描述 java堆中方法区中的内容会被删除么 java有垃圾回收机制,会自动回收不使用的对象,问题一:那在堆中的方法区中存储的关于类的代码以及常量池等这些信息会, 在不使用这个类以后,这些信息是会被销毁么?怎样被销毁呢?是由GC回收么?问题二:栈中自动分配的存储的对象引用会被自动销毁么?代码运行之后销毁么? 解决方案 堆上没有什么方法区.代码放在代码区,函数的局部变量放在堆栈上.栈中自动分配的存储的对象引用会被自动销毁么,是的,在函数返回的时候销毁.

java垃圾回收机制,以及常用的回收算法

记得之前去平安面试的时候,面试官问到了垃圾回收,我当时也就是说说了垃圾回收的原理,但是具体有哪些实现策略,我当时是懵的. 概念: Java的垃圾回收机制是Java虚拟机提供的能力,用于在空闲时间以不定时的方式动态回收无任何引用的对象占据的内存空间.我们用System.gc()或者 Runtime.getRuntime().gc()  来通知垃圾回收机(JVM)回收垃圾.很多人说垃圾回收回收的是没有用的对象,这里不准确的. 垃圾回收的作用:  1,定期发现那些对象不再被引用,并把这些对象占据的堆空

java垃圾回收机制

Java的堆是一个运行时数据区,类的实例(对象)从中分配空间.Java虚拟机(JVM)的堆中储存着正在运行的应用程序所建立的所有对象,这些对象通过new.newarray.anewarray和multianewarray等指令建立,但是它们不需要程序代码来显式地释放.一般来说,堆的是由垃圾回收 来负责的,尽管JVM规范并不要求特殊的垃圾回收技术,甚至根本就不需要垃圾回收,但是由于内存的有限性,JVM在实现的时候都有一个由垃圾回收所管理的堆.垃圾回收是一种动态存储管理技术,它自动地释放不再被程序引

细述 Java垃圾回收机制→Types of Java Garbage Collectors

本文将会介绍各种不同类型的Java垃圾回收器.垃圾回收是Java用来将程序员从分配和释放内存的琐事中解放出来的自动过程. Java有四种类型的垃圾回收器, Serial Garbage Collector Parallel Garbage Collector CMS Garbage Collector G1 Garbage Collector 这四种类型的垃圾回收器都有各自的优点和缺点.最重要的是程序员可以选择JVM使用哪种类型的垃圾回收器.我们可以通过传递不同的JVM参数来设置使用哪一个.各个

细述 Java垃圾回收机制→Java Garbage Collection Monitoring and Analysis

Java垃圾回收监控和分析工具 Java VisualVM Naarad GCViewer IBM Pattern Modeling and Analysis Tool for Java Garbage Collector HPjmeter IBM Monitoring and Diagnostic Tools for Java – Garbage Collection and Memory Visualizer Verbose GC Analyzer Java VisualVM Java Vi