堆内存溢出:
1)先设置一下堆内存大小,我这里设置为2M
2)看代码:
public class HeapOverflow { static List<Person> list = new ArrayList<>(); public static void main(String[] args)throws Exception { while (true) { // Person person = Person.getInstance(); 这个是单例的,单例是不会有内存溢出的,因为在JVM堆内存中相同对象永远只有一个内存地址,也就是说只会分配一次内存 Person person = new Person(); list.add(person); Thread.sleep(1); } } }
运行结果:
2、栈内存溢出:这里采用递归,当主线程进来的时候Java虚拟机就会开启一个虚拟机站