在Java中,内存:栈内存、堆内存。
1 栈内存
栈内存主要是用来执行程序用的,比如:基本类型的变量和对象的引用变量
栈溢出(StackOverflowError)
递归溢出
2 堆内存
堆内存作用是用于存储Java中的对象和数组,当我们new一个对象或者创建一个数组的时候,就会在堆内存中开辟一段空间给它,用于存放。
堆溢出(OutOfMemoryError:java heap space)
有可能是内存泄露,也有可能是内存溢出了
例如:
List<byte[]> buffer = new ArrayList<byte[]>();
buffer.add(new byte[10*1024*1024]);
3 方法区
持久带溢出(OutOfMemoryError: PermGen space)
有可能是运行时常量池溢出,也有可能是方法区中保存的class对象没有被及时回收掉或者class信息占用的内存超过了我们配置
引用:
https://blog.csdn.net/nkxpanda/article/details/109363540
https://blog.csdn.net/u011546655/article/details/52170470