1.StackOverflowError和OutOfMemoryError,谈谈你的理解。
- StackOverflowError:说明栈内存不足。一般是递归调用造成的。假如栈中只能放
100
个方法,而此时有110
个方法,有10
个方法无法入栈,引起栈内存溢出,抛出StackOverflowError
- OutOfMemoryError:说明堆内存不足。一般是
new
大量的对象造成的。
2.一般什么时候会发生GC?如何处理?
答:Java中GC有两种回收:年轻代的
Minor GC
,另外一个就是老年代的Full GC
;新对象创建时如果伊甸园空间不足会触发Minor GC
,如果此时老年代的内存空间不足会触发Full GC
,如果空间都不足抛出OutOfMemoryError。
3.GC回收策略,谈谈你的理解。
答:
年轻代(伊甸园区+两个幸存区),GC 回收策略为“复制
”;
老年代 保存的空间一般较大,GC回收策略为“整理-压缩
”;