2017-07-04 12 views
-2

空の文字列( "")がJavaのメモリにどのように格納されますか?空の文字列( "")がJavaのメモリにどのように格納されますか?

空の文字列""の長さが0の場合、メモリに保存する方法は?

+8

0の長さは0メモリフットプリントを意味しません。 –

+0

リファレンスにはメモリがあり、参照ポイントにはヒープ内のメモリがあります。 –

+2

他の文字列が格納されるのと同じ方法で、 'char []'フィールドを持つ 'String'オブジェクトも格納されます。空文字列には何も特別なものはありません。長さ0の 'char []'を持っています。 – Andreas

答えて

2

借りてからanswer。このプログラムは、空の文字列(文字列プールにある ""の場合は0)に対して32バイトを出力します。

public static void main(String... args) { 
    long free1 = free(); 
    String s = ""; 
    long free2 = free(); 
    String s2 = new String(""); 
    long free3 = free(); 
    if (free3 == free1) System.err.println("You need to use -XX:-UseTLAB"); 
    System.out.println("\"\" took " + (free1 - free2) + " bytes and new String(\"\") took " + (free2 
      - free3) + " bytes."); 
} 

private static long free() { 
    return Runtime.getRuntime().freeMemory(); 
} 

また、answerにチェックを入れてください。

+0

文字列が実際に占有するメモリの量は、最適化によって実行時に変更される可能性があります。 –

関連する問題