1.堆溢出
参数 : -Xms5m -Xmx5m -XX:+PrintGC
出现java.lang.OutOfMemoryError: GC overhead limit exceeded 一般是(某个循环里可能性最大)在不停的分配对象,但是分配的太多,把堆撑爆了。
出现java.lang.OutOfMemoryError: Java heap space一般是分配了巨型对象。
2.栈溢出
java.lang.StackOverflowError 一般的方法调用是很难出现的,如果出现了要考虑是否有无限递归。
虚拟机栈带给我们的启示:方法的执行因为要打包成栈桢,所以比实现同样功能的循环慢,所以树的遍历算法中:递归和非递归(循环来实现)都有存在的意义。递归代码简洁,非递归代码复杂但是速度较快。