耗尽系统资源

时间:2017-07-25 19:21:00

标签: java list resultset

我有一个方法,它会为ResultSet取一个List Object[]的每一行。我放在服务器上的一个查询回来了超过400万行。但是,每行(最多)为40个字符。

尽管400万行是大便,但每行加40个字符不应该导致我的资源耗尽,但它确实如此。

    ResultSetMetaData rsmd = someResultSet.getMetaData();
    int columnCount = rsmd.getColumnCount();
    someResultSet.last();
    int totalRows = someResultSet.getRow();
    List<Object[]> result = new ArrayList(totalRows);
    List<String> columnNames = new ArrayList();
    List<Object> addRow = new LinkedList();
    double someValue = 0d;
    for (int x = 0; x < columnCount; x++) columnNames.add(rsmd.getColumnName(x+1));
    NumberFormat nf = NumberFormat.getInstance();
    someResultSet.beforeFirst();
    while (someResultSet.next()) {
        addRow.clear();
        for (int x = 0; x < columnNames.size(); x++) {
            if (someResultSet.getObject(x + 1) instanceof Double) {
                someValue = someResultSet.getDouble(x + 1);
                addRow.add(nf.format(someValue));
            }
            else if (someResultSet.getObject(x + 1) != null) addRow.add(someResultSet.getObject(x + 1).toString());
            else addRow.add("");
        }
        result.add(addRow.toArray());
    }

为什么我的系统资源不足?在我开发的盒子上,我没有遇到任何问题,但是在需要运行的盒子上我没有爱。

0 个答案:

没有答案