首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >确定有多少对象符合GC条件

确定有多少对象符合GC条件
EN

Stack Overflow用户
提问于 2012-05-23 01:56:23
回答 3查看 81关注 0票数 0

“南华早报”第三章有一个问题。

请参阅以下代码:

代码语言:javascript
复制
public class Sample_1 {


    Short story = 200;

    Sample_1 go(Sample_1 sample){
        sample = null;
        return sample;
    }

    public static void main(String a[]){
        Sample_1 sample1 =new  Sample_1();
        Sample_1 sample2 =new  Sample_1();
        Sample_1 sample3 = sample1.go(sample2);

        sample1 = null;

        //DO STUFF

    }

}

问:有多少对象符合GC @ line //DO STUFF的条件

选项:

0

1

2

编译失败

不可能知道

在运行时抛出异常

书中说:正确的答案是2。它说“只有一个Sample_1对象(sample1)符合GC的条件,但它有与it.So相关的短值,有两个对象符合GC的条件”。

仍然不能理解这个答案。我们已经将sample1对象设为空。在我看来,没有用于GC的对象。

有什么想法吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-05-23 17:13:51

找到解决方案了..这里..。有三个对象sample1、sample2和sample3。

sample3为空,所以不需要GV它。我的意思是它并没有在整个程序中初始化。sample2正在使用中,直到最后的statement.So JVM不能GV它。

我们要将sample1置为空。所以它被添加到GV中,queue.And sample1本身有很短的object.So,有两个对象为GV做好了准备。

谢谢,古扬。

票数 0
EN

Stack Overflow用户

发布于 2012-05-23 01:59:27

因为sample1为空,所以分配给sample1的内存和它包含的Short变量有资格进行垃圾收集。

票数 1
EN

Stack Overflow用户

发布于 2012-05-23 03:07:04

仍然不能理解这个答案。我们已经将sample1对象设为空。在我看来,没有用于GC的对象。

将变量设置为null并不意味着它已被GC,它意味着它有资格被GC。您不能以编程方式控制GC何时运行。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10707414

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档