目录
1.java内存分配
Java把内存分为两种:(1)栈内存:存放基本类型变量和对象的引用变量;(2)堆内存:存放新创建的对象和数组,由垃圾回收机制管理。
2.内存溢出
(1)栈内存溢出:进行递归调用,持续增加栈深度,直到栈内存不够分配。
(2)堆内存溢出:循环创建对象或者创建足够大的对象。
3.溢出实例
(1)栈内存溢出
public class Stack{
public void stack(){
this.stack();
}
public static void main(String[] args){
Stack stack = new Stack();
stack.stack();
}
}
(2)堆内存溢出
public class Heap{
public void heap(){
while(true){
Object object = new Object();
}
}
public static void main(String[] args){
Heap heap = new Heap();
heap.heap();
}
}
4.数组内存分配
数组引用变量存放在栈内存中,数组元素存放在堆内存中。