1.后台系统,线上cpu占用高,查看发现fullgc频繁;
2.经过MemoryAnalyzer分析,发现org.apache.ibatis.scripting.xmltags.DynamicContext
C
o
n
t
e
x
t
M
a
p
和
o
r
g
.
a
p
a
c
h
e
.
i
b
a
t
i
s
.
b
u
i
l
d
e
r
.
S
q
l
S
o
u
r
c
e
B
u
i
l
d
e
r
ContextMap和org.apache.ibatis.builder.SqlSourceBuilder
ContextMap和org.apache.ibatis.builder.SqlSourceBuilderParameterMappingTokenHandler对象占用比较大,分析是sql拼接的占位符和参数对象;
3.业务代码中大量使用foreach的拼接查询语句,并且循环的参数非常之多,又由于mybatis不是单纯的拼接而是封装了对象操作,所以gc频繁;
4.解决:再应用方法中拼接好参数后,