JVM的面经

JVM也是很重要的一个面试常考的部分,其中JVM的内存区域和GC垃圾回收是最重要的点,下面让我们来学习下有哪些考点吧

1.Java虚拟机的构成(重点)
(1)Class Loader类加载器:依据指定格式,将class文件加载到内存
(2)Execution engine执行引擎:对命令进行解析
(3)Native Interface本地接口:融合不同的开发语言的原生库
(4)Runtime Data Area运行时数据区:就是java内存区域
通过类加载器将符合格式的class文件加载到内存里,并通过执行引擎去解析class里面的字节码,再提交给操作系统去执行

2.什么是反射
是在运行状态中,对于任意一个类,都可以知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性。

3.java内存区域(运行时数据区)(重点)
程序计数器:线程所执行的字节码的行号指示器
虚拟机栈:每个方法执行的同时会创建一个栈帧用于储存局部变量表,方法出口信息
本地方法栈:为Native方法服务,而虚拟机栈为java方法服务
堆:存放对象实例,垃圾收集器管理的主要区域,分为新生代和老年代
方法区:储存虚拟机加载的类信息,常量,静态变量等数据,内含运行时常量池
前三个是线程私有的,后两个是共有的

4.判断对象存活的两种方法(重点)
引用计数器法:给对象添加一个引用计数器,引用它就+1,引用失效就-1,为0就回收,缺点是环状引用不能被回收
可达性分析法:(java用的这种)以一系列的GCroot为起点,向下开始搜索,走过的路径称为引用链,不在链上的对象就回收
GCroot对象有虚拟机栈中引用的对象,方法区中类静态属性引用的对象,常量引用的对象

5.四种引用的区别
强引用:new出来的,只要存在就永远不会回收
软引用:一些还有用但并非必需的对象,只有在内存将要溢出才会回收
弱引用:被关联的对象只能生存到下一次垃圾收集发生前
虚引用:能在这个对象被回收时收到系统通知

6.垃圾回收算法(重点)
标记清除:先统一标记再清除,缺点:效率不高,会产生大量不连续的内存碎片
复制算法:分成两块,把活着的对象复制到另一块,然后对整个半区进行回收,缺点:能使用的内存变为原来的一半(老年代不用)
标记整理:标记后让存活的移动到一边,清除边界外的
分代收集:新生代大批对象死去用复制算法,老年代存活率高用标记-清理和整理回收

7.垃圾收集器(重点)
Serial:单线程的收集器(使用复制算法)
Serial old:serial的老年代(标记-整理算法)
ParNew:serial的多线程 新生代 复制算法
Parallel Scavenge :多线程复制新生代收集器的,吞吐量优先
paeallel old:上面的老年代 标记整理算法
CMS:多线程标记清除算法,垃圾收集和用户线程同时工作,关注点是尽可能缩短垃圾收集用户的停顿时间
G1:可以同时对新生代,老年代进行收集

8.双亲委派模型
如果一个加载器收到类加载的请求,会先让父类加载器去加载,一直传到启动类加载器,如果父加载器不行,自己才会尝试

未完待续…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值