我将一个字符串数组声明为:
String[] items1 = new String[5];
String[] items2 = new String[20];
如果这两个数组只包含 2 个元素,它们会对内存和性能产生多大影响。
最佳答案
你可以自己测试一下。
public static void main(String... args) {
long free1 = free();
String[] two = new String[2];
long free2 = free();
String[] twenty = new String[20];
long free3 = free();
if (free3 == free1) System.err.println("You need to use -XX:-UseTLAB");
System.out.println("String[2] took " + (free1 - free2) + " bytes and String[20] took " + (free2 - free3) + " bytes.");
}
private static long free() {
return Runtime.getRuntime().freeMemory();
}
打印
String[2] took 24 bytes and String[20] took 96 bytes.
所以你可能浪费了 72 字节的内存。如果您的内存成本为每 GB 10 美元,那么您可能会浪费 0.000072 美分的内存。但是,您的一秒钟时间可能值 2 美分。在这种情况下,在这种情况下花一毫秒的时间来担心它实际上是不值得的。即,写入 20 而不是 2 所花费的时间值(value)要高得多。
关于java - 字符串 [] 内存使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8445577/