Java 最常见的 208 道面试题:第十九模块答案-jvm

194.说一下jvm的组成部分及其作用
答案:类加载器ClassLoader
运行时数据区RuntimeDataArea
执行引擎ExecutionEngine
本地库接口NativeInterface
首先通过类加载器,会把java代码转换成字节码,运行时数据区再把字节码加载到内存中,而字节码文件只是jvm的一套指令规范,并不能直接交给底层操作系统执行,因此需要特定的命令解析器执行引擎将字节码翻译成底层系统指令,在交由cpu去执行,而这个过程中需要调用其他语言的本地接口库来实现整个程序功能

195.说一下jvm的运行时数据区
答案:程序计数器,虚拟机栈,本地方法栈,堆,方法区
有的区域随着虚拟机进程的启动而存在,有的区域则依赖用户进程的启动和结束而创建和销毁

196.说一下堆栈的区别
答案:栈内存存储的是局部变量而堆内存存储的是实体
占内存的更新速度要快于堆内存,因为局部变量的生命周期很短
占内存存放的变量声明周期一旦结束就会被释放,而堆内存存放的实体会被垃圾回收机制不定时回收

197.队列和栈是什么,有什么区别
答案:队列和栈都是用来存储数据的
队列允许先进先出的检索数据,但也有例外,deque接口允许从两端检索元素
栈和队列相似,但它运行对元素进行后进先出进行检索

198.什么是双亲委派
答案:类加载器分类为启动类加载器BootstrapClassLoader,是虚拟机自身的一部分,用来加载jre中的类库,扩展类加载器ExtensionClassLoader负责加载ext中的类库,ApplicationClassLoader负责加载用户的类
如果一个加载器收到了类加载的请求,它首先不会自己去请求这个类,而是把这个请求委派给上一级的父加载器去完成,不是父类,他们之间不是继承关系,只有党父级无法加载请求,子加载器才会去加载

199.说一下类加载的执行过程
答案:5个步骤,加载,根据查找路径找到响应的class文件然后导入
检查,检查加载的class文件的正确性
准备,该类中的静态变量分配内存空间
解析,虚拟机将常量池中的符号引用替换成直接引用的过程,符号引用就理解为一个标示,为在直接引用指向内存中的地址
初始化,对静态变量和静态代码块执行初始化工作

200.怎么判断对象是否可以被回收
答案:引用计数器,为每个对象创建一个引用奇数,有对象引用计数器+1.引用被释放时-1,当技术区为0时,可以被回收,它有个缺点,不能解决循环引用的问题
可达性分析,从gcroots开始向下搜索,搜索所有走过的路径被称为引用链,当一个对象到gcroots没有任何引用链时,证明可以被回收

201.java中有哪几种引用类型
答案:强引用,弱引用,软引用,虚引用

202.jvm垃圾回收算法
答案:标记-清除算法
标记-整理算法
复制算法
分代算法

203.说一下jvm有那些垃圾回收器
答案:serlal最早的单线程串行垃圾回收器
Serial Old:Serial 垃圾回收器的老年版本,同样也是单线程的,可以作为 CMS 垃圾回收器的备选预案。
ParNew:是 Serial 的多线程版本。
Parallel 和 ParNew 收集器类似是多线程的,但 Parallel 是吞吐量优先的收集器,可以牺牲等待时间换取系统的吞吐量。
Parallel Old 是 Parallel 老生代版本,Parallel 使用的是复制的内存回收算法,Parallel Old 使用的是标记-整理的内存回收算法。
CMS:一种以获得最短停顿时间为目标的收集器,非常适用 B/S 系统。
G1:一种兼顾吞吐量和停顿时间的 GC 实现,是 JDK 9 以后的默认 GC 选项。

207.说一下jvm调优工具
答案:jdk自带了比较常用的
jconsole,用于对jvm中的内存线程和类等进行监控
jvisualvm,jdk知道的安全性能分析工具,可以分析内存快照,线程快照,程序死锁,监控内存变化,gc变化等

208.常用的jvm调优参数
答案:Xms2g初始化堆大小为2g
-Xmx2g堆最大内存2g
-XX:NewRatio=4,设置年轻代和老年代内存比例为1:4
-XX:SurvivorRatio,设置新生代 Eden 和 Survivor 比例为 8:2;
–XX:+UseParNewGC:指定使用 ParNew + Serial Old 垃圾回收器组合;
-XX:+UseParallelOldGC:指定使用ParNew+ParNew Old垃圾回收器组合;垃圾回收器组合;
-XX:+UseConcMarkSweepGC:指定使用 CMS + Serial Old垃圾回收器组合;
-XX:+PrintGC:开启打印 gc 信息;
-XX:+PrintGCDetails:打印 gc 详细信息。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值