-
Java堆溢出
(1) 不断创建新对象
-
虚拟机栈和本地方法栈溢出
(1) 单线程下,无递归终止条件
(2) 不断开辟新线程,每个线程都会被分配自己的栈,最终溢出
-
方法区(包括运行时常量池)溢出
(1) 运行时常量池溢出的一种情况:
运行时常量池中存放了大量的字符串
(2) 方法区溢出的一种情况
运行时产生大量的类(方法区会保存各个被加载的类的信息)
-
Java中的内存泄漏
(1) 内存泄漏包括 堆中的空间没有释放 和 对象不再使用但仍在内存中 两种情况,由于JVM的GC机制,使得情况一不会发生,因此Java中的内存泄漏__指的是第二种情况__
(2) 对象不再使用但仍在内存中的几种情况
1° static 容器中保存的对象,在程序结束之前不能被释放
2° 数据库连接、网络连接、IO连接等,需要调用close()方法GC才能进行垃圾回收
3° 未释放的监听器
4° 变量不合理的作用域(一个对象超过了本应该方法的范围)
5° 被引用的静态变量
chapter02_Java内存区域与内存溢出异常_3_内存溢出的异常
本文深入探讨了Java中常见的内存溢出问题,包括Java堆、虚拟机栈、本地方法栈及方法区的溢出原因。同时,分析了内存泄漏的多种情况,如static容器、连接资源、监听器等未正确释放导致的问题。

被折叠的 条评论
为什么被折叠?



