2017-07-04 72 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

字符串实际占用的内存量可能因运行时间而异,具体取决于优化。 –

相关问题