Java常见的几种内存溢出

一.java.lang.OutOfMemoryError:Java heap space:
解决方法:

    1.检查程序,看是否有死循环或不必要地重复创建大量对象
    2.修改这两个参数来增加堆内存 -Xms3062m  设置堆初始内存 -Xmx3062m  设置堆最大内存

二.java.lang.OutOfMemoryError: PermGen space:

    这种是方法区内存不够,可通过调整JVM的配置:
  -XX:MaxPermSize=128m
  -XX:PermSize=128m

三.java.lang.StackOverflowError
  

      这也内存溢出错误的一种,即线程栈的溢出,要么是方法调用层次过多(比如存在无限递归调用),要么是线程栈太小。
      优化程序设计,减少方法调用层次;调整-Xss参数增加线程栈大小。

四.java.lang.OutOfMemoryError: Directbuffermemory
 

   调整-XX:MaxDirectMemorySize=参数,如添加JVM配置:
  -XX:MaxDirectMemorySize=128m  如果不指定,则默认与Java堆最大值(-Xmx)相同

五.java.lang.OutOfMemoryError:unable to create new native thread  

    本地方法栈空间不足以创建额外的线程,要么是创建的线程过多,要么是本地方法栈空间确实小了。
    1.通过-Xss启动参数减少单个线程栈大小,这样便能开更多线程(当然不能太小,太小会出现StackOverflowError);
    2.通过-Xms-Xmx两参数减少Heap大小,将内存让给Stack(前提是保证Heap空间够用)。

注:本文汇总互联网多篇文章与本人相关实践经验

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值