我知道当我们创建字符串时,它会进入permgenspace。我的问题是,即使该字符串文本是方法本地的,它会在jvm的生命周期中存在。例如,我有下面的代码片断: -为本地字符串文字分配内存吗?
private static void testString1(){
String str1="tetingLiteral";
}
private static void testString2(){
String str2="tetingLiteral";
}
现在从主方法我打电话
testString1();
testString12();
将STR1和STR2将指同一存储器位置。
我的理解是他们会引用相同的内存位置(即使字符串文字是在方法内部创建的,它仍然会保留在jvm的一生中)。但还是想确认一下,因为我无法编程检查becoz没有办法打印字符串存储位置
有两种获取有关字符串内存位置信息的方法。 (1)==两个字符串引用的比较,如果它们都是null或者都引用相同的String对象,则为true。 (2)'System.identityHashCode'尽可能为每个不同的对象返回一个不同的值。 – 2013-03-24 09:08:42