应用场景
当excel导出时发生了oom,优化代码后想查看下优化前和优化后导出excel时占用的内存差异,这个时候可以借助jconsole工具来进行查看。
调试步骤
测试类示例代码
模拟50万条数据调用优化前和优化后excel工具类
- 首先打开优化前的工具类方法调用,注释掉优化后调用的代码,并在测试方法中打一个断点,使用debug模式启动程序
- 打开命令行,输入jconsole,会弹出一个gui界面,选择本地进程中debug的那个进程,点击连接
- 放开debug断点,继续执行程序,可以在gui界面上看到实时内存使用情况
可以看到优化前代码内存占用率在持续升高,直到堆内存满为止,这样最终就导致oom的情况。
- 打开优化后的代码,重新执行以上步骤, 结果如下
可以看到优化后代码内存占用最高时只有700M,并且很快就回收完成了。
小结
以上是通过POI的XSSFWorkbook和SXSSFWorkbook方式导出excel演示的例子,可以通过jconsole工具,较为直观的展现出两种方式在大批量数据导出excel时的内存使用情况,对于重现oom和进行性能调优非常有帮助。