`
fxly0401
  • 浏览: 144334 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

符合垃圾自动垃圾回收的标准(转)

阅读更多
程序段2:

  1.Object sobj = new Object ( ) ;

  2.Object sobj = null ;

  3.Object sobj = new Object ( ) ;

  4.sobj = new Object ( ) ;

  问:这段代码中,第几行的内存空间符合垃圾收集器的收集标准?

  答:第1行和第3行。因为第2行为sobj赋值为null,所以在此第1行的sobj符合垃圾收集器的收集标准。而第4行相当于为sobj赋值为null,所以在此第3行的sobj也符合垃圾收集器的收集标准。

  如果有一个对象的句柄a,且你把a作为某个构造器的参数,即 new Constructor ( a )的时候,即使你给a赋值为null,a也不符合垃圾收集器的收集标准。直到由上面构造器构造的新对象被赋空值时,a才可以被垃圾收集器收集。

  程序段3:

  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;

  问:这段代码中,第几行的内存空间符合垃圾收集器的收集标准?

  答:第7行。注意这类题型是认证考试中可能遇到的最难题型了。

  行1-3分别创建了Object类的三个对象:aobj,bobj,cobj


  行4:此时对象aobj的句柄指向bobj,所以该行的执行不能使aobj符合垃圾收集器的收集标准。

  行5:此时对象aobj的句柄指向cobj,所以该行的执行不能使aobj符合垃圾收集器的收集标准。

  行6:此时仍没有任何一个对象符合垃圾收集器的收集标准。

  行7:对象cobj符合了垃圾收集器的收集标准,因为cobj的句柄指向单一的地址空间。在第6行的时候,cobj已经被赋值为null,但由cobj同时还指向了aobj(第5行),所以此时cobj并不符合垃圾收集器的收集标准。而在第7行,aobj所指向的地址空间也被赋予了空值null,这就说明了,由cobj所指向的地址空间已经被完全地赋予了空值。所以此时cobj最终符合了垃圾收集器的收集标准。 但对于aobj和bobj,仍然无法判断其是否符合收集标准。

  总之,在Java语言中,判断一块内存空间是否符合垃圾收集器收集标准的标准只有两个:

  1.给对象赋予了空值null,以下再没有调用过。

  2.给对象赋予了新值,既重新分配了内存空间。

  最后再次提醒一下,一块内存空间符合了垃圾收集器的收集标准,并不意味着这块内存空间就一定会被垃圾收集器收集。
转自:http://blog.csdn.net/javayohn/article/details/3202064
分享到:
评论

相关推荐

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

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

    java数组初始化笔试题-yvm:[yvm]低性能垃圾回收jvm

    语言功能,并包含一个基于标记清除的并发垃圾收集器。 此 VM 的主要组件符合 . 它是可运行的,各种语言功能将逐步添加到此 VM 中。 我没有足够的时间来编写一个完整覆盖的单元测试来确保 yvm 的各个方面都运行良好,...

    java虚拟机2021面试题第三季

    2. 内存管理:JVM负责内存的分配和垃圾回收。它会自动为Java应用程序分配内存,并在对象不再被引用时自动释放内存。 3. 字节码验证和安全性检查:JVM对字节码进行验证,以确保它符合Java语言规范,并且没有潜在的...

    java虚拟机2021面试题第一季

    2. 内存管理:JVM负责内存的分配和垃圾回收。它会自动为Java应用程序分配内存,并在对象不再被引用时自动释放内存。 3. 字节码验证和安全性检查:JVM对字节码进行验证,以确保它符合Java语言规范,并且没有潜在的...

    java虚拟机2021面试题第二季

    2. 内存管理:JVM负责内存的分配和垃圾回收。它会自动为Java应用程序分配内存,并在对象不再被引用时自动释放内存。 3. 字节码验证和安全性检查:JVM对字节码进行验证,以确保它符合Java语言规范,并且没有潜在的...

    这是一个符合modbus协议的CRC16校验算法的java代码的实现.zip

    健壮性与高性能:Java通过垃圾回收机制确保内存的有效管理,同时也能通过JIT编译器优化来提升运行时性能。 标准库丰富:Java拥有庞大的类库,如Java SE(Java Standard Edition)包含基础API,用于开发通用应用程序...

    sealisp:用于PSP + UNIX克隆的Lisp解释器。-开源

    目前,它可以为UNIX克隆和PSP进行编译,它没有外部依赖关系,垃圾回收器和数字库以及所有其他组件是从头开始自制的。 到目前为止的工作:*自动精确垃圾收集器。 *程序宏。 *计算机代数库*一堆有用的原语。 *一个...

    E路通电子传真(实现企业传真无纸化办公)

    ► 反垃圾传真:支持用户设定按照主叫号码、传真标识等规则定义垃圾传真,并自动拒绝符合规则的垃圾传真 。 ► 查询统计:可方便地根据时间、主叫号码、员工帐号,查询统计接收到的传真,使传真管理更方便。

    e路通电子传真(实现企业传真无纸化办公)2012beta2版

    ► 反垃圾传真:支持用户设定按照主叫号码、传真标识等规则定义垃圾传真,并自动拒绝符合规则的垃圾传真 。 ► 查询统计:可方便地根据时间、主叫号码、员工帐号,查询统计接收到的传真,使传真管理更方便。

    E路通电子传真(实现企业传真无纸化办公)3.0.2.1版

    ► 反垃圾传真:支持用户设定按照主叫号码、传真标识等规则定义垃圾传真,并自动拒绝符合规则的垃圾传真 。 ► 查询统计:可方便地根据时间、主叫号码、员工帐号,查询统计接收到的传真,使传真管理更方便。 3.0.2.1...

    【05-面向对象(下)】

    •Object类提供的equals方法判断两个对象相等的标准与==完全相同。因此开发者通常需要重写equals方法。 类成员 •在java类里只能包含Field,方法,构造器,初始化块,内部类(接口、枚举)等5种成员。 用...

    Java经典入门教程pdf完整版

    晑性能、可靠的、解释型、自动垃圾回收等特点。 这里只解释一下平台无关和分布式,其余的在后面会逐步接触到 3:平台无关 所谓平台无关指的是:用Java写的程序不用修改就可在不同的软硬件平台上运行。这 烊就能实现同样...

    JAVA--达内培训笔记

    (4)垃圾回收机制 --- 自动垃圾收集,永远不会出现内存泄露的问题 4、虚拟机 java语言是先编译后解释,java源码是通过编译生成一种特殊的.class的中间字节码文件,然后再由JVM进行解释运行。 (编译) (解释...

    网络安全知识竞赛网络安全知识科普题(含参考答案).docx

     把快递箱子放进可回收垃圾里 C. 把快递面单撕下来再放进干垃圾分类中 D. 以上做法都可以 参考答案:A 网络安全知识竞赛网络安全知识科普题(含参考答案)全文共17页,当前为第4页。网络安全知识竞赛网络安全知识...

    c#学习笔记.txt

    防止变量被垃圾回收器重定位。 (5) lock lock 关键字将某个语句块标记为临界区。 6. 方法参数 如果为没有 ref 或 out 的方法声明一个参数,则此参数可以具有关联的值。可以在方法中更改该值,但当控制传递回调用过程...

    C#微软培训资料

    第六章 类 型 转 换 .48 6.1 隐式类型转换 .48 6.2 显式类型转换 .53 6.3 小 结 .56 第七章 表 达 式 .58 7.1 操 作 符 .58 7.2 算术操作符和算术表达式.59 7.3 赋值操作符和赋值表达式.64 7.4 关系...

    C/C++笔试题(附答案,华为面试题系列)

    没有回收垃圾资源。 7.什么函数不能声明为虚函数? constructor函数不能声明为虚函数。 8.冒泡排序算法的时间复杂度是什么? 时间复杂度是O(n^2)。 9.写出float x 与“零值”比较的if语句。 if(x>0.000001&&x...

    入门学习Linux常用必会60个命令实例详解doc/txt

    文件为doc版,可自行转成txt,在手机上看挺好的。 本资源来自网络,如有纰漏还请告知,如觉得还不错,请留言告知后来人,谢谢!!!!! 入门学习Linux常用必会60个命令实例详解 Linux必学的60个命令 Linux提供...

Global site tag (gtag.js) - Google Analytics