Java池字符串池中的对象管理

时间:2013-04-20 20:08:19

标签: java string garbage-collection

您好我正在使用java并想知道如何在String池中创建String对象  以及如何管理它们。

所以在下面的例子中我创建了两个字符串s和s1,那么有人能解释我在LIne1中创建了多少个对象吗?还有多少个对象可以在Line3中进行垃圾收集?

  String s = "x" + "y";//Line 1
  String s1 = s;//Line 2
  s = null;//Line 3

2 个答案:

答案 0 :(得分:3)

只创建了一个对象"xy"。编译器会进行优化。

没有对象符合垃圾回收的条件。

答案 1 :(得分:0)

它将在字符串常量池区域中创建一个对象xy。由于"x"+"y"将在编译期间进行评估。此外,垃圾收集器无法访问String常量池区域。

参考:https://docs.oracle.com/javase/specs/jls/se7/html/jls-3.html#jls-3.10.5