線上一臺job機器掛了,內(nèi)存dump下來一看,發(fā)現(xiàn)jdbc占了7、8百兆內(nèi)存。
分析了下發(fā)現(xiàn),ibatis會針對prepared sql緩存對應(yīng)的PrepareStaement對象,SessionScope類里有個map,在緩存開關(guān)打開后,就會緩存到map里。sql的樣式如:select * from order where id in(?,?,?...)
由于我們in里面的個數(shù)不定,而且很多,生成了一堆不同的sql,導(dǎo)致內(nèi)存膨脹。解決方法就是將in的個數(shù)固定下來