【发布时间】:2013-03-24 08:59:52
【问题描述】:
我知道当我们创建字符串字面量时,它会进入 permgenspace。我的问题是它是否会在 jvm 的生命周期内一直存在,即使该字符串文字是方法的本地变量。例如我有以下代码 sn-p:-
private static void testString1(){
String str1="tetingLiteral";
}
private static void testString2(){
String str2="tetingLiteral";
}
现在从我调用的主要方法
testString1();
testString12();
str1 和 str2 将引用相同的内存位置。
我的理解是它们将引用相同的内存位置(即使在方法内部创建了字符串文字,它也会在 jvm 的生命周期内保留在那里)。但仍然想确认它,因为我无法以编程方式检查它,因为无法打印字符串内存位置
【问题讨论】:
-
有两种方法可以获取有关字符串内存位置的信息。 (1) == 如果两个 String 引用都为 null 或都引用同一个 String 对象,则它们的比较为真。 (2)
System.identityHashCode尽可能为每个不同的对象返回不同的值。
标签: java string memory garbage-collection