JVM内存溢出

内存不足(溢出):由于 java 堆或本地内存中的内存耗尽,应用程序显示“内存不足”错误。

内存泄漏:java 堆或本地内存的持续内存增长,最终将导致内存不足状态。

内存溢出与内存泄露的相同点和不同点:

相同点:都会报OOM的错误。
不同点:内存不足是由于设置的内存不够引起的,适当调大即可解决,而内存溢出是由于代码编写不规范而引起的,调大内存只能缓解,不能彻底解决问题,需要根据报错信息,分析DUMP文件来定位错误,再与开发人员沟通对代码进行优化。

现象:
Heap区:后台报java.lang.OutOfMenoryError:Java heap space错误。
Perm区:后台报java.lang.OutOfMenoryError:PermGen space 错误。

分析:
Heap区:查看GC日志,如果gc正常可适当调大对应区的内存,若不正常,每次执行full gc回收的内存少,则是应用程序的问题,需对生成的DUMP文件进行分析来定位出错的位置,再与开发人员沟通对代码进行优化。
Perm区:装载Class信息等基础数据,发生泄露是由于应用加载的类很多,需要加大其设置-XX:MaxPermSize=,再进一步监视。

posted @ 2017-04-24 15:37  Talon丶  阅读(223)  评论(0编辑  收藏  举报