Java内存区域与内存溢出(二)
实战OutOfMemoryError
Java堆溢出
Java堆主要用于存储对象的实例,只要不停的创建的对象,保证GC Roots到对象之间可达的路径避免GC回收这些对象,那么就可以出现堆溢出现象
虚拟机栈和本地方法栈溢出
- StackOverFlowError:如果请求的栈深度大于虚拟机所允许的深度的时候,那么抛出
- OutOfMemoryError:虚拟机在拓展栈的时候,无法获取到更多内存的时候,那么抛出
方法区和运行时常量池溢出
- 常量池溢出最常见的是,使用String不停的使用,那么没创建一个全新的String的时候会添加到方法区里
- 方法区常见溢出,是有大量的Class没加载,直到class没有空间去加载,就会导致方法区溢出