我知道當我們創建字符串時,它會進入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