一.内存溢出问题
运营反馈项目部分功能卡住
1.查看服务器,发现cpu升高,内存占满
2.查看内存溢出文件,下载到本地,使用jdk自带工具jvisualvm或mat分析原因(需在项目启动加参数 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=文件保存路径)
3.发现堆中有一个对象占用内存大,到项目中去排查这个类,发现是在导出报表,有人直接查询全部数据到服务器,故优化成分页
二.mybatis中的ognl并发问题
org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.builder.BuilderException: Error evaluating expression 'list != null and list.size() > 0'. Cause: org.apache.ibatis.ognl.MethodFailedException: Method "size" failed for object [111] [java.lang.IllegalAccessException: Class org.apache.ibatis.ognl.OgnlRuntime can not access a member of class java.util.Collections$SingletonList with modifiers "public"]
原因:项目中使用的mybatis版本为3.2.2,这个版本的ognl有bug
解决方案:这个问题其实在3.2.4已经解决了,先找到3.2.4以上版本,用3.2.4的类将3.2.2有bug的类替换掉(只要放在项目中先加载的路径,如项目的根路径,让这个类优先于3.2.2的版本加载),后续再看下项目要不要将mybatis升级并测试