程序中由于是检测文件,所以每次调用检测方法耗时很长,且由于多个文件,检测方法又在循环里并返回结果添加至 List 中,并将 List json 串存入 mysql 。因 list 对象在慢速循环中一直被占用,导致 GC 无法回收,所以直接造成 gc overhead exceeded limit,Outofmemory 异常,解决方式肯定不能直接粗暴地增加 heap size,想法是以 IO 或 Jvm 外部 RAM 换取 heap 被长时间占用的空间。
初步想法是不用 list 接受检测函数的返回值,检测函数检测后直接将结果存入 redis 或者 mongodb,当整个循环结束后再次查询相关数据,一次性直接存入 mysql 。
大家有什么较优的推荐吗?
1
arrow8899 2020-05-31 21:57:25 +08:00
不能在循环内部写入 mysql 吗? List json 存入 mysql 是什么操作,存的字符串吗
|
2
stephCurry OP @arrow8899 mysql 版本低,不支持 json,计划将 List 转 json 字符串存入后存入
|
3
skypyb 2020-06-01 07:36:50 +08:00
直接写文件呗,循环完读文件到 mysql 里去
|