java - 字符串 [] 内存使用

标签 java arrays string

我将一个字符串数组声明为:

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/

相关文章:

arrays - vba下标错误

python - 如何将依赖树的输出解析为扁平结构

java - 你会如何给 Android Things 中的蓝牙服务命名?

java - 如何使用AsyncTask更新全局变量

java - Math.random() 与 Random 类

java - 未知实体,因为属性是一个接口(interface)

javascript - splice() 无法正常工作

java - 套接字发送和接收字节数组

java - 在 Java 中通过字符串传递引用

c - 如何摆脱 C 中的 "call is the same expression as the source"警告?