代码之家  ›  专栏  ›  技术社区  ›  darkalbo

作为参数生存期传递的Java内联对象

  •  1
  • darkalbo  · 技术社区  · 8 年前

    内联创建并传递给方法的对象的生存期是多少? 例如:

    myMethod(new String("Hello World"));
    

    字符串“Hello World”是在myMethod执行之后创建并销毁的,还是在垃圾回收器删除它之前仍保留在内存中?

    2 回复  |  直到 8 年前
        1
  •  7
  •   nirali.gandhi    8 年前

    JAVA对String Literal的处理方式不同。此处,将在中创建值为“Hello World”的String对象 字符串常量池 .

    这个文本在Constant Pool中的生存时间将由JVM决定,这意味着JVM将决定何时收集它作为垃圾(就像Constant Pool中没有更多内存,现在这个对象没有被任何引用引用)。

    但它不会在方法执行后立即被销毁。

    您可以在此处找到有关字符串常量池的更多详细信息: http://www.thejavageek.com/2013/06/19/the-string-constant-pool/

        2
  •  0
  •   Brennan Bennett    8 年前

    我非常肯定它只存在于方法中,除非您将其分配给全局变量。