程序员Java面试题汇总

Java面试题(JVM)

2020-07-23  本文已影响0人  我最酷_b537

194.说一下 jvm 的主要组成部分?及其作用?

组件的作用: 首先通过类加载器(ClassLoader)会把 Java 代码转换成字节码,运行时数据区(Runtime Data Area)再把字节码加载到内存中,而字节码文件只是 JVM 的一套指令集规范,并不能直接交个底层操作系统去执行,因此需要特定的命令解析器执行引擎(Execution Engine),将字节码翻译成底层系统指令,再交由 CPU 去执行,而这个过程中需要调用其他语言的本地库接口(Native Interface)来实现整个程序的功能。

195. 说一下 jvm 运行时数据区?

有的区域随着虚拟机进程的启动而存在,有的区域则依赖用户进程的启动和结束而创建和销毁。

说一下堆栈的区别?
队列和栈是什么?有什么区别?

198. 什么是双亲委派模型?

在介绍双亲委派模型之前先说下类加载器。对于任意一个类,都需要由加载它的类加载器和这个类本身一同确立在 JVM 中的唯一性,每一个类加载器,都有一个独立的类名称空间。类加载器就是根据指定全限定名称将 class 文件加载到 JVM 内存,然后再转化为 class 对象。

类加载器分类:

双亲委派模型:如果一个类加载器收到了类加载的请求,它首先不会自己去加载这个类,而是把这个请求委派给父类加载器去完成,每一层的类加载器都是如此,这样所有的加载请求都会被传送到顶层的启动类加载器中,只有当父加载无法完成加载请求(它的搜索范围中没找到所需的类)时,子加载器才会尝试去加载类。

199. 说一下类加载的执行过程?

类加载分为以下 5 个步骤:

200. 怎么判断对象是否可以被回收?

一般有两种方法来判断:

201. java 中都有哪些引用类型?

202. 说一下 jvm 有哪些垃圾回收算法?

203. 说一下 jvm 有哪些垃圾回收器?

204. 详细介绍一下 CMS 垃圾回收器?

205.新生代垃圾回收器和老生代垃圾回收器都有哪些?有什么区别?

新生代垃圾回收器一般采用的是复制算法,复制算法的优点是效率高,缺点是内存利用率低;老年代回收器一般采用的是标记-整理的算法进行垃圾回收。

206. 简述分代垃圾回收器是怎么工作的?

207. 说一下 jvm 调优的工具?

JDK 自带了很多监控工具,都位于 JDK 的 bin 目录下,其中最常用的是 jconsole 和 jvisualvm 这两款视图监控工具。

208. 常用的 jvm 调优的参数都有哪些?

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

目录:2020最新Java面试题及答案汇总(上)
目录:2020最新Java面试题及答案汇总(下)

上一篇 下一篇

猜你喜欢

热点阅读