项目中出现一些查询数据库所得结果过多,容易导致OOM的场景。因而采用了mybatis游标查询的功能来批量获取结果。但游标不宜长时间保持开启,项目接受将结果以文件的形式临时存放在硬盘上。
使用了JDK原生序列化方法,即ObjectInputStream/ObjectOutputStream,据说会有安全漏洞和性能不足。
欢迎大家交流经验,非常感谢!
你可以考虑一下,既然都临时存到硬盘了,为什么不使用数据库本身来保存数据呢?难道自己写的比数据库更好用?因此更推荐的方式是进行分页查询,一次不要查询出太多的数据,否则不管数据存到哪里只要加载到内存还是会导致 OOM。
最后发现项目里有引入jackson csv,可以比较方便地序列化pojo