记录一次 - 内存占用优化
某个导出,导出数据量过大总是导致OOM,但是根据需求,导出数据大小并没有那么大
按照导出数据的查询来看
SELECT
g.inventory_code,
g.visit_record_code,
g.recovery_price AS transactionAmount
FROM
crm_goods g
...
...
三个字段大小预计大小100W数据应该是不大于100m的,但是现实是1个G都不够用,果断开启MAT,查看最大对象如下
震惊,100w个单纯对象声明,竟然占用了1.3GB内存,于是我测试了一下原对象全部字段和单纯查询三个字段声明100W个的差距
ArrayList<VisitGoodsInfoResp> visitGoodsInfoResps = new ArrayList<>(1000000);
ArrayList<VisitGoodsInfoExport> visitGoodsInfoExports = new ArrayList<>(1000000);
for (int i = 0; i < 1000000; i++)