一般出现的情况有
1、内存中加载的数据量过于庞大,如一次从数据库取出过多数据
2、集合类中有对对象的引用,使用完成后未清空,使得JVM不能回收
3、代码中存在死循环或循环产生过多重复的对象实体
4、使用的第三方软件中的BUG
5、启动参数内存值设定的过小
一般解决的方案有
第一步:修改JVM启动参数,直接增加内存(-Xms,-Xmx参数)
第二步:检查错误日志,查看"OutOfMemory"错误前是否有其它异常或错误
第三步:对代码进行走查和分析,找出可能发生内存溢出的地雷位置
第四步:使用内存查看工具动态查看内存使用情况
参照来源:《黑马程序员面试宝典(java).pdf》