JVM其他常见面试题

1、简单介绍一下Java GC的新生代和老年代

这个GC 的新生代和老年代的划分是基于分代假说来的,所谓的分代假说指的是极大多数对象都是朝生夕灭,存活周期非常短,但是由少数的对象的存活周期非常长,所以就出现了两极分化现象,如果按照这个现象来分区存储对象,对每个分区的对象采用不用的垃圾回收算法,这样回收的效率就会比较高。

2、虚拟机栈和本地方法栈为什么是私有的?

保证线程中的局部变量不被别的线程访问到,虚拟机栈和本地方法栈是线程私有的。

3、OOM问题和StackOverflow

1.OOM问题

1. 栈内存溢出: 创建新线程,为该线程分配虚拟栈内存时, 内存空间不足
2. 堆内存溢出: 为对象实例分配内存空间时, 内存空间不足
3. 方法区溢出: 加载类文件时, 内存空间不足以上是 总的内存空间不足!!

2.StackOverflow

线程调用方法,jvm压入一个栈帧到该线程虚拟机栈中。
如果递归调用的层数过多,栈帧总和超过设定的值,则stackoverFlow异常
是栈内内存空间不足!!
posted @ 2020-12-18 20:21  Lucky小黄人^_^  阅读(152)  评论(0编辑  收藏  举报