【问题标题】:Is there any garbage collection in below code?下面的代码中是否有任何垃圾收集?
【发布时间】:2016-01-31 18:34:12
【问题描述】:

下面的代码有垃圾回收吗?

public static void main(String []args){
    System.out.println("Hello World");
    Vector v1 = new Vector();
    Vector v2 = new Vector();
    v1 = null;
    Vector v3 = v1;
    v1 = v2;
    v1.addElement(v2);
}

我的回答是 Yes,因为对象 v3 不再在代码中被访问。

【问题讨论】:

    标签: java garbage-collection


    【解决方案1】:

    在代码v1 = null之后,变量v1之前引用的对象是垃圾回收的候选对象

    此外,在 main 结束之前不会抛出 Exception,因此可能会发生垃圾回收。

    请注意,不确定是否调用了垃圾回收,并且可能不是因为代码将很快完成而无需进行垃圾回收。


    这里逐行解释你的代码。

    Vector v1 = new Vector(); // Creates a new Vector (I call it vFirst) and assign it to v1
    Vector v2 = new Vector(); // Creates a new Vector (I call it vSecond) and assign it to v2
    v1 = null;        // Now vFirst is not referenced by any variable so is candidate to be gc
    Vector v3 = v1;   // Assign a null value to v3
    v1 = v2;          // Assign to v1 the vector vSecond
    v1.addElement(v2); // Add to the vSecond the element vSecond
    

    正如您在 v1 = null 之后看到的,创建的第一个 Vector 可以被垃圾收集。不是说是垃圾回收,而是GC需要内存的情况下可能是垃圾回收。

    【讨论】:

    • v1 关联的向量在 v1 = null 之后没有被任何代码行引用,因此它有资格被垃圾收集(仍在使用中)。
    • 我读到如果没有对对象的任何引用,那么就会发生垃圾收集。但是即使 v1 被赋值为 null,但它的 bean 仍然在下面的代码中使用。
    • 不会,但有可能发生。
    • 对我来说 v3 将首先收集垃圾 根本没有使用
    • 我编辑我的答案,向您展示每个变量值和参考
    【解决方案2】:

    引用v1 设置为null,因此该引用所引用的对象将被垃圾收集器收集。但是,您无法控制收集本身,您可以要求 JVM 启动它,但它可能会被拒绝。这一切都取决于运行时堆内存的需求。

    【讨论】:

    • 如有需要可领取。
    【解决方案3】:

    一旦您分配了v1 = null;,分配给 v1 的原始 Vector 将不再可访问,并将被垃圾回收。 v3 开始时为 null,不会被 GC

    【讨论】:

    • 如有需要可领取。 v1 = null 后被垃圾回收不是真的,它成为被垃圾回收的候选项
    • Davide,是的,你是对的,但我认为这是初级程序员的面试问题,因此在这个级别上,GC = GC 的候选人
    【解决方案4】:

    将任何对象分配给 null 后,该对象就可以进行垃圾回收了。这并不一定意味着它会在那个时间点被垃圾收集。

    所以当v3变为null的时候,肯定是可以gc的,但是什么时候会被垃圾回收就不确定了。

    【讨论】:

    • 不是 v3 被垃圾回收的候选对象。是v1引用的向量先验,
    【解决方案5】:

    没有。 v3 只是 GC 的候选者。 这里没有显式的GC语句,不能是=)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-06
      • 1970-01-01
      • 2013-10-18
      • 2012-07-14
      相关资源
      最近更新 更多