`
woshixushigang
  • 浏览: 576115 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

垃圾回收

    博客分类:
  • j2ee
阅读更多
引用自百度:
Java的垃圾回收机制是Java虚拟机提供的能力,用于在空闲时间以不定时的方式动态回收无任何引用的对象占据的内存空间。
需要注意的是:垃圾回收的是没有被活动对象引用的对象所占据的内存空间而不是对象本身,70%以上的人回答的含义是回收对象,
实际上这是不正确的。
System.gc()
Runtime.getRuntime().gc()  
上面的方法调用时用于显式通知JVM可以进行一次垃圾回收,即通知javaVM这个是可回收的但不是立即的,
真正垃圾回收机制具体在什么时间点开始发生动作这同样
是不可预料的,这和抢占式的线程在发生作用时的原理一样。
现存谈的是对象和引用,你创建一个Alpha a引用,就等于创建了三个引用,分别是a、a.b1、a.b2。当a被回收时(a=null),那么a.b1与a.b2都不能再使用。
对象只有在没有引用时,才会被标记为垃圾!
============================
       Beta b1 = new Beta();
       Beta b2 = new Beta();
       Alpha a1 = new Alpha();
       Alpha a2 = new Alpha();
       a1.b1 = b1;
       a1.b2 = b1;
       a2.b2 = b2;
       a1 = null;
       b1 = null;
       b2 = null;
============================
上面代码一共创建了四个对象,我们给这四个对象加个编号。
Beta b1 = new Beta();//1
Beta b2 = new Beta();//2
Alpha a1 = new Alpha();//3,a1是唯一引用
Alpha a2 = new Alpha();//4,a2是唯一引用
下面是引用的指向传递,但对象就上面这四个。
a1.b1 = b1;//该句的作用与下面两句不同,因为a1.b1是静态属性,所以这句等于a2.b1=b1和Alpha.b1=b1。
a1.b2 = b1;//b1、a1.b2、a1.b1、Alpha.b1都指向了1号对象。当然也包括a2.b1
a2.b2 = b2;//b2、a2.b2都指向了2号对象。
==============
下面是杀死引用的语句
a1 = null;//a1被杀了,那么a1.b1、a1.b2也就都被杀了。
b1 = null;//b1被杀了
b2 = null;//b2被杀了
我们看看编号1和编号2两个对象,还有没有引用指向它们
编号1对象:b1、a1.b2、a1.b1、Alpha.b1、a2.b1,去除a1.b2、a1.b1、b1之后还有a2.b1和Alpha.b1!
编号2对象:b2、a2.b2,去除b2之后还有a2.b2。

所以只回收编号3,即Alpha a1 = new Alpha()被回收了。
垃圾收集,没有句柄指向,即没有被引用。


  


  
分享到:
评论

相关推荐

    垃圾回收机制面试题·.docx

    ### 垃圾回收机制详解 #### 一、引言 在现代软件开发中,内存管理一直是程序设计中的一项重要任务。特别是在高级编程语言中,如何有效地管理和释放内存资源成为了衡量一个程序性能的关键因素之一。Java作为一种...

    java高级之垃圾回收机制

    ### Java高级之垃圾回收机制详解 #### 一、引言 在现代软件开发中,Java因其平台无关性、丰富的库支持以及自动内存管理等特性,成为企业级应用开发的首选语言之一。其中,垃圾回收机制(Garbage Collection, GC)是...

    垃圾回收技术示例 垃圾回收技术示例

    垃圾回收(Garbage Collection, GC)是编程语言中用于自动管理内存的重要机制,尤其是在像Java、C#等语言中。这个技术示例旨在深入探讨垃圾回收的原理、工作流程以及在实际开发中的应用。 垃圾回收的基本目标是识别...

    新一代垃圾回收器ZGC设计与实现.ch01.print1

    Java垃圾回收器是Java虚拟机(JVM)的关键组成部分,它自动管理程序的内存,确保对象的生命周期得到妥善处理,从而避免内存泄漏。本章主要介绍了垃圾回收算法和JVM中实现的不同类型的垃圾回收器。 首先,垃圾回收的...

    垃圾回收仿真分析

    《垃圾回收场仿真与分析》 垃圾回收是环保工作的重要组成部分,随着人类活动对环境的持续影响,资源的回收利用愈发显得必要。本章节主要探讨如何通过仿真技术对垃圾回收站进行分析,以优化运营效率。 1. **系统...

    C++实现垃圾回收器

    在编程领域,垃圾回收(Garbage Collection, GC)是一种自动管理内存的技术,它负责跟踪和回收不再使用的对象,以防止内存泄漏。C++作为一种静态类型、编译式的语言,其标准库并不内置垃圾回收机制,程序员需要手动...

    Java垃圾回收详解

    ### Java垃圾回收详解 #### 垃圾回收基础概念 在Java编程语言中,垃圾回收(Garbage Collection, GC)是一项自动化的内存管理机制。它能够自动检测并释放那些不再被程序使用的对象所占用的内存空间,从而有效地...

    垃圾回收算法与实现

    垃圾回收算法篇详细介绍了多种垃圾回收算法,包括标记-清除算法、引用计数法、复制算法、标记-压缩算法、保守式垃圾回收、分代垃圾回收、增量式垃圾回收和RCImmix算法等。这些算法各有其特点和适用场景,它们是垃圾...

    java C#垃圾回收算法分析

    Java和C#是两种流行的面向对象的编程语言,它们都具备自动内存管理机制,其中垃圾回收(Garbage Collection, GC)是一项核心功能。垃圾回收旨在自动检测并释放不再使用的内存,防止内存泄漏,确保程序的稳定运行。...

    c++ 垃圾回收机制

    "垃圾回收机制"这个概念在很多高级语言如Java或Python中是非常常见的一种自动内存管理方式,但在C++中,它并不是标准库的一部分。C++的内存管理主要依赖于程序员手动进行,通过new和delete操作符来分配和释放内存。...

    java垃圾回收技术,面试会问

    ### Java垃圾回收技术详解 #### 一、引言 在现代软件开发中,Java作为一种广泛使用的编程语言,其垃圾回收机制(Garbage Collection, GC)是面试和技术交流中经常提及的话题之一。尤其对于那些深入研究Java内存...

    JVM入门实战/arthas实战/垃圾回收算法/垃圾回收器/jvm内存模型分析

    第四节:垃圾回收算法 1.1标记清除算法 1.2复制算法 1.3 标记整理(标记压缩)算法 第五节:垃圾回收器 1.1Serial/Serial Old收集器 1.2 ParNew收集器 1.3Parallel Scavenge收集器 1.4Parallel Old收集器 1.5CMS...

    简单c++垃圾回收器

    由于C++不内置垃圾回收机制,程序员需要手动管理内存,这可能导致内存泄漏问题。为了解决这个问题,我们可以设计一个简单的C++垃圾回收器(Garbage Collector)。这个回收器的目的是自动追踪和释放不再使用的堆内存...

    java垃圾回收器代码举例

    Java垃圾回收器(Garbage Collector, GC)是Java编程语言中的一个重要特性,它负责自动管理内存,自动回收不再使用的对象,以防止内存泄漏。在Java中,程序员无需手动释放内存,这一过程由JVM(Java虚拟机)自动完成...

    Python垃圾回收机制

    Python垃圾回收机制是编程语言中一个重要的组成部分,它主要用于自动管理程序运行时的内存资源,确保内存的有效利用和及时释放。在Python中,垃圾回收机制是实现内存管理的关键工具,帮助程序员避免了手动管理内存...

    c#的GC垃圾回收机制详细讲解文档

    C#的垃圾回收机制(GC)是.NET框架中一个至关重要的特性,它负责自动管理和释放内存,从而减轻程序员的工作负担。GC的主要目标是回收不再使用的对象所占用的内存,以防止内存泄漏。在这个机制下,程序员无需手动管理...

    C++垃圾回收器linux版本

    在C++编程中,垃圾回收(Garbage Collection, GC)是一种自动管理内存的技术,它能够自动识别并释放不再使用的对象,以防止内存泄漏。在Java等语言中,垃圾回收是标准特性,但在C++中,程序员通常需要手动管理内存,...

Global site tag (gtag.js) - Google Analytics