Java 运行 大变量内存不足?

Java running out of memory for big variable?

我有一个大约 32000 行的庞大文件。我正在对其 Java 中的内容进行一些操作,因此我创建了一个更小的压缩文件来测试我的程序。它工作正常,但是当我使用实际文件(较大的文件,32000 行)时,它爆炸了,说:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
    at translator.MainLinkedHashMap.createLinkedHashMapFromString(MainLinkedHashMap.java:100)
    at translator.MainLinkedHashMap.main(MainLinkedHashMap.java:25)

请注意 ArrayIndexOutOfBoundsException > 1。

我一直在调试,我看到我存储文件行的 LinkedHashMap 在调试器中有 30400 行而不是 32000 行。

这是否表示 Java 运行 内存不足? (文件本身不大,2M,但是行很多。)

谢谢。

更新:这是代码:

private static LinkedHashMap<String, String> createLinkedHashMapFromString(String rawString) {
        LinkedHashMap<String, String> resultMap = new LinkedHashMap<String, String>();
        String [] values = rawString.split(",");

        for (int i = 0; i < values.length; i++) {
            values[i] = values[i].trim();
        }

        String [] pair = null;
        for (String value : values) {
            pair = value.split("=");
            resultMap.put(pair[0], pair[1]);
        }
        return resultMap;
    }

我不知道你文件的内容,但这个块中 100% 抛出了异常

   for (String value : values) {
        pair = value.split("=");
        resultMap.put(pair[0], pair[1]);
    }

resultMap.put(pair[0], pair[1]);

简单地说,String#spit 的结果只有 1 个元素长度(记住数组的第一个元素索引为 0),这就是你得到错误的原因。我敢打赌,并非您文件中的所有 "lines" 都符合您的预期。