JAVA内存溢出
内存溢出(Out Of Memory,简称 OOM)是指应用系统中存在无法回收的内存或使用的内存过多,最终使得程序运行要用到的内存大于虚拟机能提供的最大内存。此时程序就运行不了,系统会提示内存溢出。
产生内存溢出的原因主要有2种:
-
由于长期保持某些资源的引用,垃圾回收器无法回收它,从而使该资源不能及时释放,也称为内存泄露。
-
当需要保存多个耗用内存过大或加载单个超大的对象时,该对象的大小超过了当前剩余的可用内存空间。
解决内存溢出方法:
(1)修改 JVM 启动参数(-Xms,-Xmx),直接增加内存。
(2)检查错误日志,查看 OutOfMemoryError 前是否有其它异常或错误。
(3)安排有经验的编程人员对代码进行检查和分析,找出可能发生内存溢出的位置。
(4)使用内存查看工具动态查看内存使用情况。比如 jconsole,工作原理是监测 Java 程序运行时所有对象的申请、释放等动作,将内存管理的所有信息进行统计、分析、可视化,根据这些信息判断程序是否有内存泄漏。