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.减少堆空间大小
  • 相关阅读:
    智能指针unique_ptr记录
    ubuntu系统火狐无法播放网页视频
    javascript中json对象json数组json字符串互转及取值
    C#压缩文件
    C#异步编程
    C# POST请求 json格式
    C# Http方式下载文件到本地类
    C#中NPOI操作excel之读取和写入excel数据
    浅析C#中抽象类和接口的区别
    C#自动实现Dll(OCX)控件注册的两种方法
  • 原文地址:https://www.cnblogs.com/lizo/p/10333186.html
Copyright © 2011-2022 走看看