文字列リテラルを作成すると、permgenspace内に入ることを知っています。私の質問は、その文字列リテラルがメソッドに対してローカルであっても、jvmの存続期間中はそこにあるのでしょうか。たとえば、以下のコードスニペットがあります:-
private static void testString1(){
String str1="tetingLiteral";
}
private static void testString2(){
String str2="tetingLiteral";
}
今私が呼び出すメインメソッドから
testString1();
testString12();
str1とstr2は同じメモリ位置を参照します。
私の理解では、それらは同じメモリ位置を参照します(文字列リテラルがメソッド内で作成された場合でも、jvmの存続期間中はそこにとどまります)。しかし、文字列のメモリ位置を印刷する方法がないため、プログラムで確認できなかったため、確認したかったのです。