当前位置:  技术问答>java相关

关于垃圾收集器的几个问题?有兴趣的兄弟姐妹来看看!

    来源: 互联网  发布时间:2015-02-16

    本文导语:  程序段1: 1.fobj = new Object ( ) ; 2.fobj. Method ( ) ; 3.fobj = new Object ( ) ; 4.fobj. Method ( ) ; 问:这段代码中,第几行的fobj 符合垃圾收集器的收集标准? 答:第3行。因为第3行的fobj被赋了新值,产生了一...

程序段1:
1.fobj = new Object ( ) ;
2.fobj. Method ( ) ;
3.fobj = new Object ( ) ;
4.fobj. Method ( ) ;
问:这段代码中,第几行的fobj 符合垃圾收集器的收集标准?
答:第3行。因为第3行的fobj被赋了新值,产生了一个新的对象,即换了一块新的内存空间,也相当于为第1行中的fobj赋了null值。这种类型的题在认证0考试中是最简单的。

2、程序段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,仍然无法判断其是否符合收集标准。


我现在的问题是:程序段1中,我觉的符合垃圾收集器的标准应该是第一行,因为fobj在第三行赋予了新值;程序段3中,为什么第六行不对。

|
垃圾收集的标准是不再存在对该对象的引用。
程序3中的第六行的赋值不符合是因为第五行的赋值使aobj和cobj指向同一对象,对cobj的赋值为null不会影响aobj对该对象的引用,只有存在一个对该对象的引用就不会进行对该对象的垃圾收集。
程序1中你的说明中已经很清楚了。哪有一个对象在第一次被初始化时就符合垃圾收集的?

|
aobj=bobj;是将bobj的句柄赋给aobj的对象,同样第五行将cobj的句柄赋给bobj的对象。
想想,如果第六行产生垃圾回收,为什么不在第四行产生!

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Python类的构造函数,析构函数以及垃圾回收机制详细介绍及代码举例
  • CCNIC-垃圾-垃圾-垃圾
  • 用Linux发的邮件被当成垃圾邮件
  • ubuntu垃圾清理
  • 邮件反病毒和反垃圾网关 SAGATOR
  • 反垃圾邮件系统 SpamAssassin
  • 防垃圾留言插件 Akismet
  • WordPress反垃圾插件 Defensio Anti-Spam
  • 发垃圾邮件系统 SpamCheck
  • 垃圾回收器 bdw-gc
  • WordPress防垃圾留言插件 SpamBam
  • 垃圾信息过滤插件 stop-spam
  • 反垃圾留言插件 WP-Ban
  • linux会产生垃圾文件吗?
  • WP的反垃圾插件 WangGuard
  • 怎么用javamail彻底删除邮件。不是放到垃圾箱里。。
  • 关于垃圾回收的问题
  • 反垃圾邮件系统 milter manager
  • 反垃圾邮件系统 Rspamd
  • WordPress防垃圾留言插件 DNS-anti-spam
  • 垃圾邮件过滤 phPOP3clean


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3