美文网首页Java
java OOM内存泄漏原因及解决方法

java OOM内存泄漏原因及解决方法

作者: b121bd095a24 | 来源:发表于2019-08-23 14:50 被阅读1次

这篇文章主要介绍了java OOM内存泄漏原因及解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

一、什么是OOM 

OOM,全称“Out Of Memory”,翻译成中文就是“内存用完了”,当JVM因为没有足够的内存来为对象分配空间并且垃圾回收器也已经没有空间可回收时,就会抛出这个error 

二、为什么会OOM、出现的原因是什么 

为什么会没有内存了呢?原因不外乎有两点: 

① 分配的少了:比如虚拟机本身可使用的内存(一般通过启动时的VM参数指定)太少。 

② 应用用的太多,并且用完没释放,浪费了。此时就会造成内存泄露或者内存溢出。 

三、解决办法 

① java.lang.OutOfMemoryError: Java heap space ——>java堆内存溢出,此种情况最常见,一般由于内存泄露或者堆的大小设置不当引起。对于内存泄露,需要通过内存监控软件查找程序中的泄露代码,而堆大小可以通过虚拟机参数-Xms,-Xmx等修改。 

② java.lang.OutOfMemoryError: PermGen space ——>java永久代溢出,即方法区溢出了,一般出现于大量Class或者jsp页面,或者采用cglib等反射机制的情况,因为上述情况会产生大量的Class信息存储于方法区。此种情况可以通过更改方法区的大小来解决,使用类似-XX:PermSize=64m -XX:MaxPermSize=256m的形式修改。另外,过多的常量尤其是字符串也会导致方法区溢出。 

③ java.lang.StackOverflowError ——> 不会抛OOM error,但也是比较常见的Java内存溢出。JAVA虚拟机栈溢出,一般是由于程序中存在死循环或者深度递归调用造成的,栈大小设置太小也会出现此种溢出。可以通过虚拟机参数-Xss来设置栈的大小

以上就是本文的内容,希望对大家学习有所帮助,在JAVA学习上有什么不懂的可以随时私信我。

点击获取更多JAVA学习资料及辅导


相关文章

  • java OOM内存泄漏原因及解决方法

    这篇文章主要介绍了java OOM内存泄漏原因及解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有...

  • Android 内存泄漏

    内存泄漏的原因 常见的内存泄漏与解决方法 检测内存泄漏 认识内存泄漏 根本原因就是当一个对象理应被回收的时候,因为...

  • Android OOM之内存泄漏详解

    OOM(OutOfMemory)就是我们平时所碰到的内存溢出,而内存泄漏的最终后果就是导致OOM。内存泄漏是造成应...

  • Android性能优化—布局优化技巧

    前面几篇文章在前面几篇文章当中, Android 内存泄漏和OOM分析(一) Android 内存泄漏和OOM分析...

  • OOM总结

    OOM:out of memory 原因 内存泄漏:申请使用完的内存没有释放,导致虚拟机不能再次使用该内存,此时这...

  • Android | App内存优化 之 内存泄漏 要点概述 以及

    本文目录:内存泄漏的定义、表现、危害、情景,及避免OOM的技巧Memory Analyzer Tool(MAT)简...

  • Android 内存泄漏

    【Android 内存泄漏】 引用: ★★★ 【知识必备】内存泄漏全解析,从此拒绝ANR,让OOM远离你的身边,跟...

  • Android 内存优化简介

    1、内存占用高导致的问题 1、内存泄漏导致OOM崩溃 2、界面卡顿,影响用户体验 3、高内存耗电,被系统及安全软件...

  • 面试题-第一期

    内存泄漏&&内存溢出 参考博客参考博客 先来看看内存泄漏,内存溢出,OOM,GC回收这几个概念。把App的堆内存空...

  • Android 内存优化

    Android内存泄露容易导致内存溢出,又称为OOM。 内存泄漏怎么产生的 资源对象没关闭造成的内存泄漏 构造Ad...

网友评论

    本文标题:java OOM内存泄漏原因及解决方法

    本文链接:https://www.haomeiwen.com/subject/deqtectx.html