zoukankan      html  css  js  c++  java
  • java内存溢出总结(1.8)

    堆溢出

    • 原因:老年代没有足够的空间存放即将进入老年代对象(或者没有连续的空间存下某个大对象),1.多次gc没有回收的对象 2. ygc后,s区满了,多余的对象直接进入老年代,3.大对象直接进入老年代
    • 解决办法:1.检查是否存在内存泄漏,2.合理设置 新生代和老年代的比例 3.增大 堆内存 -xmx

    元数据区溢出

    • 原因:1.加载大量的class(包括ASM、Cglib、javassit、动态代理库生成的)2.大量JSP文件编译成Servlet类文件 3.对于OSGI的应用,被不同的加载器加载同一个类会保存多分.
    • 解决办法:1.合理使用ClassLoader,并定期回收2.减少系统生成类的数量 3.增大-XX:MetaspaceSize -XX:MaxMetaspaceSize

    栈溢出(stackoverflow)

    • 原因:1.栈的调用太深(大部分是写递归死循环)2.方法中使用到大量局部变量
    • 解决办法:1.检查代码的递归调用是否存在问题 2.增大 栈空间大小 -Xss

    无法创建线程(unable to create native thread)

    • 原因:1.程序创建的线程数超过了操作系统的限制,2.系统内存耗尽,无法为新线程分配内存( 栈空间大小*线程 + 堆大小+元数据区 +直接内存 > 系统内存)
    • 解决办法:1.减少 虚拟机栈大小 -Xss 2.减少堆大小 -xmx

    直接内存溢出

    • 原因:1.内存泄漏,导致直接内存无法被回收 2.大量使用nio 3.系统内存耗尽
    • 解决办法: 1.检查代码,及时释放不再使用的直接内存 2.增大直接内存大小-XX:MaxDirectMemorySize 3.减少堆空间大小
  • 相关阅读:
    连续两天写论文
    既然杂事比较多,索性统统处理一下
    Power symbol
    不要被一些无谓的事情烦扰
    今天提前回去吧,整理一下,为下周做好准备。
    天气暖和了,我却感冒了
    每天回想一下,今天到底完成了什么
    opensue12.1硬盘升级安装12.2问题解决
    IPmsg(飞鸽传书)协议翻译
    关于交叉验证和过拟合
  • 原文地址:https://www.cnblogs.com/lizo/p/10333186.html
Copyright © 2011-2022 走看看