chapter02_Java内存区域与内存溢出异常_3_内存溢出的异常

本文深入探讨了Java中常见的内存溢出问题,包括Java堆、虚拟机栈、本地方法栈及方法区的溢出原因。同时,分析了内存泄漏的多种情况,如static容器、连接资源、监听器等未正确释放导致的问题。
  • Java堆溢出

    (1) 不断创建新对象

  • 虚拟机栈和本地方法栈溢出

    (1) 单线程下,无递归终止条件

    (2) 不断开辟新线程,每个线程都会被分配自己的栈,最终溢出

  • 方法区(包括运行时常量池)溢出

    (1) 运行时常量池溢出的一种情况:

    运行时常量池中存放了大量的字符串

    (2) 方法区溢出的一种情况

    运行时产生大量的类(方法区会保存各个被加载的类的信息)

  • Java中的内存泄漏

    (1) 内存泄漏包括 堆中的空间没有释放对象不再使用但仍在内存中 两种情况,由于JVM的GC机制,使得情况一不会发生,因此Java中的内存泄漏__指的是第二种情况__

    (2) 对象不再使用但仍在内存中的几种情况

    1° static 容器中保存的对象,在程序结束之前不能被释放

    2° 数据库连接、网络连接、IO连接等,需要调用close()方法GC才能进行垃圾回收

    3° 未释放的监听器

    4° 变量不合理的作用域(一个对象超过了本应该方法的范围)

    5° 被引用的静态变量

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值