我想从CSV读取巨大的数据,包含大约500,000行。
我正在使用OpenCSV库。我的代码是这样的

    CsvToBean<User> csvConvertor = new CsvToBean<User>();
    List<User> list = null;
    try {
        list =csvConvertor.parse(strategy, new BufferedReader(new FileReader(filepath)));
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }


多达200,000条记录,数据被读入User Bean对象列表。但是对于更多的数据,我得到了

java.lang.OutOfMemoryError: Java heap space


我在“ eclipse.ini”文件中有此内存设置

-Xms256m
-Xmx1024m


我正在考虑将大文件拆分为单独的文件并再次读取这些文件的解决方案,我认为这是一个冗长的解决方案。

还有什么其他方法可以避免OutOfMemoryError异常。

最佳答案

逐行读取

像这样的东西

    CSVReader reader = new CSVReader(new FileReader("yourfile.csv"));
    String [] nextLine;
    while ((nextLine = reader.readNext()) != null) {
        // nextLine[] is an array of values from the line
        System.out.println(nextLine[0] + nextLine[1] + "etc...");
    }

10-04 23:33
查看更多