2017-07-04 73 views
-2

空字符串(「」)如何在Java中的內存中存儲?空字符串(「」)如何在Java中的內存中存儲?

空字符串""是0的長度,那麼如何將它存儲在內存中?

+8

0長度並不意味着0內存佔用。 –

+0

有參考內存和參考指向堆中的內存。 –

+2

與存儲其他字符串的方式相同,即帶'char []'字段的'String'對象。沒有什麼特別的空字符串,它只是一個長度爲0的'char []'。 – Andreas

回答

2

借用此answer。該程序打印空字符串的32個字節(和字符串池中的「」爲0)。

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

字符串實際佔用的內存量可能因運行時間而異,具體取決於優化。 –

相關問題