iteye_19820 2010-09-18 12:06
浏览 281
已采纳

垃圾收集问题

我在一篇文章里看见一题有关垃圾收集的文件,其中他举了个例子,我不是很明白,希望
清楚的哥们告知下:

题目: 程序段:

[code="java"]Object a = new Object(); //---------1
Object a = null; //---------2
Object b = new Object(); //---------3
b = new Object(); //---------4
[/code]

[b]问: 在这几行代码中,第几行内存空间符合垃圾收集器的收集标准?为什么?[/b]

参考答案: 1和3。 第4行相当于为b赋值为null。 不明白什么意思。

参考文章:  [url]http://www.360doc.com/content/10/0822/18/1780254_47975944.shtml[/url]

顺便推荐一些好的有关垃圾收集的文件来看看,谢谢!
  • 写回答

3条回答 默认 最新

  • jiang5495 2010-09-19 00:15
    关注

    当用new 他建对象时,会在内存堆中分配空间。
    而我们定义的变量就是指向这些空间的引用,比如说:
    Object a = new Object();

    new Object()会在内存堆分配空间,而a是指向该空间的引用,
    所谓的垃圾回收就是收回由 new 在内存堆中分配的空间。

    那么什么时候情况下堆中的内存空间可以被回收呢?

    即当再也没有引用变量指向该空间时,则可以被收回。比如:
    1.Object a = new Object(); //---------1

    2. Object a = null; //---------2

    3. Object b = new Object(); //---------3

    4. b = new Object(); //---------4

    上面,在内存堆上先后伸请了三个空间块,即三个new开避的,
    很显然1,和3的空间已无引用变量指向,
    而第4句话中的空间有引用b指向,
    故是1,3满足条件.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 chaquopy python 安卓
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 有没有帮写代码做实验仿真的
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥30 vmware exsi重置后登不上
  • ¥15 易盾点选的cb参数怎么解啊
  • ¥15 MATLAB运行显示错误,如何解决?
  • ¥15 c++头文件不能识别CDialog
  • ¥15 Excel发现不可读取的内容
  • ¥15 关于#stm32#的问题:CANOpen的PDO同步传输问题