文章目录
-
- 1.请简单描述下 JVM 运行时数据区包括哪些部分?
- 2.JVM 中是怎么判断对象可回收的?
- 3.方法区主要存储什么信息?
- 4.请简单描述下 JVM 出现的几种异常?
- 5.在默认参数下,如果 Eden 区的大小为 80M,求堆空间总大小?
- 6.什么是程序计数器?为什么 JVM 需要它?
- 7.请描述下 JVM 中对象创建需要的几个步骤?
- 8.JVM 对象的访问定位有哪两种?HostSpot 版本中用哪种?
- 9.JVM 中存在哪些引用?
- 10.JVM 中垃圾收集有哪些算法,各自的特点?
- 11.HotSpot 中的堆为什么要分为新生代和老年代?
- 12.JVM 中哪几种情况需要对类进行初始化?
- 13.请简单描述下双亲委派模型?
- 14. CMS 收集器有哪些特点?
- 15.G1 收集器有哪些特点?
- 16、JVM 类加载机制有哪几步,分别每一步做了什么工作?
|
|
1.请简单描述下 JVM 运行时数据区包括哪些部分?
答:
JVM 在执行 Java 程序的过程中会把它管理的内存分为若干个不同的区域,这些组成部分有些是线程私有的,有些则是线程共享的
线程私有的:程序计数器,虚拟机栈,本地方法栈
线程共享的:方法区,堆
思维导图
2.JVM 中是怎么判断对象可回收的?
答:
可达性分析算法
这个算法的基本思想就是通过一系列的称为 “GC Roots”的对象作为起点,从这些节点开始向下搜索,节点所走过的路径称为引用链,当一个对象到 GC Roots没有任何引用链相连的话,则证明此对象是不可用的