线上一台job机器挂了,内存dump下来一看,发现jdbc占了7、8百兆内存。
分析了下发现,ibatis会针对prepared sql缓存对应的PrepareStaement对象,SessionScope类里有个map,在缓存开关打开后,就会缓存到map里。sql的样式如:select * from order where id in(?,?,?...)
由于我们in里面的个数不定,而且很多,生成了一堆不同的sql,导致内存膨胀。解决方法就是将in的个数固定下来
线上一台job机器挂了,内存dump下来一看,发现jdbc占了7、8百兆内存。
分析了下发现,ibatis会针对prepared sql缓存对应的PrepareStaement对象,SessionScope类里有个map,在缓存开关打开后,就会缓存到map里。sql的样式如:select * from order where id in(?,?,?...)
由于我们in里面的个数不定,而且很多,生成了一堆不同的sql,导致内存膨胀。解决方法就是将in的个数固定下来