为什么会出现“线程中的异常”AWT-EventQueue-0“java.lang.OutOfMemoryError:java堆空间”错误?

为什么会出现“线程中的异常”AWT-EventQueue-0“java.lang.OutOfMemoryError:java堆空间”错误?,java,memory,heap,Java,Memory,Heap,为什么我在线程AWT-EventQueue-0 java.lang.OutOfMemoryError中遇到异常:java堆空间因为对象[I]=rs.getObjecti+1;?大约有10000条记录,每条记录大约4000个字符 String[] tableColumnsName = {idString, dateEnteredString, entryString, operatorString, licenseNoString, lastModifiedString};

为什么我在线程AWT-EventQueue-0 java.lang.OutOfMemoryError中遇到异常:java堆空间因为对象[I]=rs.getObjecti+1;?大约有10000条记录,每条记录大约4000个字符

        String[] tableColumnsName = {idString, dateEnteredString, entryString, operatorString, licenseNoString, lastModifiedString};
        DefaultTableModel aModel = (DefaultTableModel) logEntryTable.getModel();
        aModel.setColumnIdentifiers(tableColumnsName);

        ResultSetMetaData rsmd;
        try {
            rsmd = rs.getMetaData();

            int colNo = rsmd.getColumnCount();
            while(rs.next()){
                Object[] objects = new Object[colNo];
                for(int i=0;i<colNo;i++){
                    objects[i]=rs.getObject(i+1);
                }
                aModel.addRow(objects);
            }
            logEntryTable.setModel(aModel);

            logEntryTable.getColumnModel().getColumn(0).setMaxWidth(30);

            rs.close();

        } catch (SQLException e) {
            e.printStackTrace();
            showCantConnectErrorDialog();
        }


您的JVM内存不足。当JVM内存不足时,可能会在分配内存的代码中的任何位置出现OutOfMemoryError。尝试使用增加堆大小。

您的JVM内存不足。当JVM内存不足时,可能会在分配内存的代码中的任何位置出现OutOfMemoryError。尝试使用增加堆大小。

我同意^^^您需要增加堆大小,或者如果不可能,请减少所有内容以尽可能节省空间

我同意^^^您需要增加堆大小,或者如果不可能,则减少所有内容以尽可能节省空间

列中的数据有多大?任何记录的最大大小是多少?1100条记录听起来很低,不足以触发OOME。mysql数据库中有一个文本字段没有max chars,但每个字段包含大约两段文本。两段仍然不是很精确。但是每个段落1000个字符?每个条目3792个字符和10000个条目。很抱歉,我之前已经离开了。40000000个字符,大约80MB的Java堆+临时存储所需的所有其他内容和内存。。。128MB可能不够。列中的数据有多大?任何记录的最大大小是多少?1100条记录听起来很低,不足以触发OOME。mysql数据库中有一个文本字段没有max chars,但每个字段包含大约两段文本。两段仍然不是很精确。但是每个段落1000个字符?每个条目3792个字符和10000个条目。很抱歉,我之前已经离开了。40000000个字符,大约80MB的Java堆+临时存储所需的所有其他内容和内存。。。128MB可能不够。我在eclipse的调试模式下增加到128MB,但无法使用命令行进行设置。有没有办法在运行时设置它?我需要确保每个用户的Java虚拟机都有足够的内存分配给堆-Xmx是JVM的一个参数,您需要在command-line.Ahh中传递给运行代码的java进程,没错。在执行可执行jar文件时是否有方法传入参数?基本上,我有一个Java桌面应用程序,它是现场工作人员的日志,该应用程序将在客户的计算机上运行,我需要确保每个客户在堆中都有足够的内存分配给他们的Java VM,以便他们可以随着时间的推移查看大量日志条目。当然,只需在命令行中添加-Xmx1024M或任何其他足够大的数字,例如java-Xmx1024M-jar my.jar。您可以创建一个bat/sh文件,该文件将包含具有适当内存设置的命令行。我在eclipse的调试模式下增加到128 MB,但无法使用命令行进行设置。有没有办法在运行时设置它?我需要确保每个用户的Java虚拟机都有足够的内存分配给堆-Xmx是JVM的一个参数,您需要在command-line.Ahh中传递给运行代码的java进程,没错。在执行可执行jar文件时是否有方法传入参数?基本上,我有一个Java桌面应用程序,它是现场工作人员的日志,该应用程序将在客户的计算机上运行,我需要确保每个客户在堆中都有足够的内存分配给他们的Java VM,以便他们可以随着时间的推移查看大量日志条目。当然,只需在命令行中添加-Xmx1024M或任何其他足够大的数字,例如java-Xmx1024M-jar my.jar。您可以创建一个bat/sh文件,其中包含具有适当内存设置的命令行。