Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Memory leaks jdbctemplate查询:线程中的异常";“文件观察者”;java.lang.OutOfMemoryError:java堆空间_Memory Leaks_Spring Boot_Mariadb_Heap Memory_Jdbctemplate - Fatal编程技术网

Memory leaks jdbctemplate查询:线程中的异常";“文件观察者”;java.lang.OutOfMemoryError:java堆空间

Memory leaks jdbctemplate查询:线程中的异常";“文件观察者”;java.lang.OutOfMemoryError:java堆空间,memory-leaks,spring-boot,mariadb,heap-memory,jdbctemplate,Memory Leaks,Spring Boot,Mariadb,Heap Memory,Jdbctemplate,我得到了一个内存不足的错误,当我运行500k+结果查询时发生了这个错误。 我试图创建一个结果集,以使用指向db结果的“指针”。 并将获取大小设置为1000。 我还能做什么? 我正在使用spring boot和maria db驱动程序,谢谢 ExcelComponent.java DatabaseChooser.java @Component public class DatabaseChooser { public JdbcTemplate getJdbcTemplateByDatab

我得到了一个内存不足的错误,当我运行500k+结果查询时发生了这个错误。 我试图创建一个结果集,以使用指向db结果的“指针”。 并将获取大小设置为1000。 我还能做什么? 我正在使用spring boot和maria db驱动程序,谢谢

ExcelComponent.java DatabaseChooser.java

@Component
public class DatabaseChooser {

    public JdbcTemplate getJdbcTemplateByDatabaseId(SettingsDbsModel dbModel){
        DataSource dataSource = createDatasource(dbModel);
        try {
            dataSource.getConnection().setAutoCommit(false);
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource, true);
        jdbcTemplate.setFetchSize(100);
        return jdbcTemplate;
    }
ResultSetExelWriter.java

public class ResultSetExcelWriter implements ResultSetExtractor{
    ExcelWriterNew writer;

    public ResultSetExcelWriter(WriterOptions csvWriterOptions) {

        writer = new ExcelWriterNew(csvWriterOptions);
    }

    @Override
    public Object extractData(ResultSet rs) throws SQLException, Da

    taAccessException {

            while (rs.next()) {
                System.out.println(rs.getObject(1));
            }

            writer.make();
            return null;
        }
    }

病人:“我这样做很痛。”。医生:“好吧,不要那样做。”说真的,你的程序会对500K行做什么?数据是否可以用SQL进行汇总,以便只需要将几行数据发送回程序?你能写一个存储程序来做这项工作吗?等等,或者把它分成1K行块。或者…应将行逐个写入excel/csv。在没有保存到内存的情况下(为了防止内存泄漏,我尝试使用游标ResultSet迭代结果),但仍然会使内存膨胀。哪一个是主内存占用器?JAVA擅长?MySQL?患者:“当我这样做的时候会很痛。”。医生:“好吧,不要那样做。”说真的,你的程序会对500K行做什么?数据是否可以用SQL进行汇总,以便只需要将几行数据发送回程序?你能写一个存储程序来做这项工作吗?等等,或者把它分成1K行块。或者…应将行逐个写入excel/csv。在没有保存到内存的情况下(为了防止内存泄漏,我尝试使用游标ResultSet迭代结果),但仍然会使内存膨胀。哪一个是主内存占用器?JAVA擅长?MySQL?
public class ResultSetExcelWriter implements ResultSetExtractor{
    ExcelWriterNew writer;

    public ResultSetExcelWriter(WriterOptions csvWriterOptions) {

        writer = new ExcelWriterNew(csvWriterOptions);
    }

    @Override
    public Object extractData(ResultSet rs) throws SQLException, Da

    taAccessException {

            while (rs.next()) {
                System.out.println(rs.getObject(1));
            }

            writer.make();
            return null;
        }
    }