简述Java中的OOM并给出代码例子

本文简要介绍Java中的OutOfMemoryError(OOM),包括永久保存区域、堆区域和虚拟机栈三种常见类型的OOM。Java堆内存溢出通常由内存泄露或堆设置不当引起,而虚拟机栈则可能导致StackOverflowError。内存泄露是指使用完的内存未释放,而内存溢出则是申请的内存超过了JVM的容量。文中还将通过代码示例分析堆区的OOM问题。
摘要由CSDN通过智能技术生成

所谓OOM是OutOfMemory的简写

当JVM因为没有足够的内存来为对象分配空间并且垃圾回收器也已经没有空间可回收时,就会抛出这个error

最常见的三种OOM:

  • Permanent Generation space(永久保存区域)

    • java永久代溢出,即方法区溢出
    • -XX:PermSize -XX:MaxPermSize 调整
  • Heap space(堆区域)

    • java堆内存溢出,此种情况最常见,一般由于内存泄露或者堆的大小设置不当引起。
    • -Xms,-Xmx调整
  • Java Stacks(虚拟机栈)

    • 更常见的是java.lang.StackOverflowError 不会抛OOM error,但也是比较常见的Java内存溢出

执行以下代码会出现java.lang.OutOfMemoryError : Java heap space显然是堆区OOM了。

public static void main(String[
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值