我在表里添加了500W的测试数据,表中数据如下  一次性读取 500w 数据到 JVM 内存中 必然会造成OOM现象,所以我分别试验了2个读取百万数据的方式,并用Junit分析内存占用 1. 分页多次查询,并进行深度分页优化 @Test void testPage(){ //查询出表中总记录数 Long total = orderMapper.selectCount(null); //每次分页读取的结果数 int fetchSize = 100000; // 分页优化参数,上次查询的最大ID int lastMaxId = 0; for (int i = 0; i orderLambdaQueryWrapper = new LambdaQueryWrapper(); orderLambdaQueryWrapper.gt(Order::getOrderId, lastMaxId); List records = orderMapper.selectPage(new Page(1, fetchSize), orderLambdaQueryWrapper).getRecords(); records.stream().forEach(System.out::println); //获取本次最大的Id lastMaxId = records.get(records.size() - 1).getOrderId(); } }  2. Mybatis的流式查询 @Test void testStream() { orderMapper.selectList(Wrappers.emptyWrapper(), resultContext -> { // 依次得到每条业务记录 System.out.println("当前处理第" + resultContext.getResultCount() + "条记录."); Object order = resultContext.getResultObject(); System.out.println(order); //做自己的业务处理,比如分发任务 }); }  我从网上看了许多博客,说流式查询可以很好避免OOM问题。 但是为什么在分析堆内存占用中,反而是 多次分页查询的内存占用更小,平均只有400MB 而流式查询却能高达平均1GB的占用? > > 关于如何开启流式查询是参考的MybatisPlus官网,MybatisPlus版本是也最新的。[https://baomidou.com/pages/1922u2/](https://link.segmentfault.com/?enc=HfCA4OwGKsgEPO85IcCWLA%3D%3D.RukAgmXhqHctfv9iSswumgaajs20fAqWApiCgHe4saFWwg8ezf7inhDp65Q%2B7L6v)