Mybatis中Mapper文件过多,引起java.lang.StackOverflowError


Spring3.1+Mybatis3.1,并且使用了mybatis-spring-1.1.0。
起初构建系统没有问题,
但是系统开发过程中,Tomcat启动时会报java.lang.StackOverflowError错误。
经过初步调查应该是Mapper文件数量增多导致的,合并了一些Mapper后Tomcat便启动正常了。
个人判断应该是每个Mapper会生成一个实例导致内存溢出,但是StackOverflowError明显是栈溢出异常,而不是堆溢出异常,所以和实例多少好像没有关系。
但是这种临时方案不能解决随着系统扩大而不断增加的Mapper数量的问题。
请教各位,有没有比较官方的解决方案,Mybatis有没有开关来控制这种内存溢出情况。

ibatis java

4821843 12 years, 3 months ago

该mapper是当作持久代放入内存中的

参数调优的话需要设置
-XX:MaxPermSize
这个值默认是物理内存的1/4可以适当调高该值试试

阿鲁点卡多 answered 12 years, 3 months ago

Your Answer