Mac 上的 Java OutOfMemory,在 Windows 上工作

标签 java macos out-of-memory

我有一个从 .csv 文件加载数据并将其显示在表格中的应用程序。该应用程序适用于 Windows 中的所有文件(无论它有多大),但它仅适用于 Mac 上小于 8MB 的文件,任何其他大于 8MB 的文件都会抛出“java.lang.OutOfMemoryError:Java堆空间”。我调试了该应用程序以确保它正在读取 .csv 文件并且确实如此,但过了一会儿它因该错误而崩溃。

我做了一些研究并尝试使用 -Xmx 和 -Xms 来增加 Java 堆大小,但仍然出现相同的错误。

以下代码是应用程序在将一些包含信息的数组添加到 mainHashtable 后崩溃的地方:

 while(reader.readRecord()){

        ArrayList<CSVEntry> list = new ArrayList<CSVEntry>();
        for(int i = 0; i < colscount; i++){
            CSVEntry entry = new CSVEntry(headerNames[i], reader.get(i));
            list.add(entry);
        }
        mainHashtable.put(recordcount, list);
        recordcount++;
}

任何帮助我解决此问题的建议都将不胜感激。

最佳答案

-Xmx 是正确答案。 Java 对最大堆空间有奇怪的默认值,具体取决于平台(有时低至 8MB)。

如果您的应用程序使用 Main-Class INF 指令捆绑在 JAR 中,则以下内容应该适合您:

java -Xmx256m -jar myapp.jar

关于Mac 上的 Java OutOfMemory,在 Windows 上工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6783695/

相关文章:

docker - 因内存不足而杀死的任何 Docker 钩子(Hook)

java - 如何从 aws elastic beanstalk 环境中获取堆转储

java - 编译文件时内存不足异常

java - JSP Servlet多线程问题

java - 如何在文件编写器中合并方法

java - 使用 aspose 在 XML 中设置数据

java - 当可能存在多种模式时使用Java流来查找模式?

ios - OpenSSL 从控制台命令到函数

objective-c - 如何将 NSSplitView 分隔线厚度更改为 1px?

ios - 将撤消管理器与 mac 催化剂一起使用