问题描述:
1、系统在执行某个操作时,必现OOM异常。
问题的定位:
1、排查代码,未发现问题。
2、在虚拟机启动时,添加参数:-XX:+HeapDumpOnOutOfMemoryError(当发生oom异常时,生成dump文件),得到异常时的dump文件。
3、使用 jvisualvm 分析dump文件。发现某个pojo存在很多个实例对象,再定位到具体抛出异常的地方,发现是在获取数据库数据时,没有使用分页参数,导致 select * from tableName 这样的低级错误发生。
问题的解决:
显而易见。
由该案例得到的总结:
1、由于开发人员的不规范编码,导致的问题。
比如说:变量的命名问题,变量名称应该顾名思义。
因此:强制推行全员使用《阿里java开发规范》进行代码的检查与开发。