JVM面试答题思路

阅读: 评论:0

JVM面试答题思路

JVM面试答题思路

JVM面试答题思路

  • 总思路
  • 内存区域
  • 对象
    • 对象的创建过程
    • 对象的内存布局
    • 对象如何访问
    • 类文件结构(不记)
    • 类加载器
      • 双亲委派
    • 类加载过程
  • 垃圾回收
    • 对象内存分配的原则
    • 如何判断对象是否死亡
    • 垃圾回收算法
    • 垃圾回收器
  • 监控和故障处理工具
  • JVM线上调优
  • main方法的执行过程

总思路

要有框架思维,知识体系结构吗,原则就是需要逐步细化
参考:.html#_1-%E6%A6%82%E8%BF%B0

内存区域

先说线程私有再说共享、需要讲哪些会内存溢出。

对象

对象的创建过程

先总的说有多少步,再详细说每一步的细节。
共五步,每一步消息说

对象的内存布局

对象头,实例数据,对齐填充

对象如何访问

句柄和直接指针

类文件结构(不记)

类加载器

答题思路:介绍不同类加载器的加载路径,然后说双亲委派。
JVM内置三个重要的ClassLoader

  1. BootstrapClassLoader(启动类加载器):lib下的jar包和类
  2. ExtendClassLoader(拓展类加载器):lib/ext目录下的jar包和类
  3. AppClassLoader(应用程序类加载器):classpath下的所有Jar包和类

双亲委派

两个过程

  • 向上委派:查找查询缓存,若果类已经被加载过则直接返回,没有则继续向上查找
  • 向下查找:查找加载路径,有则返回,没有则继续向下

好处

  • 为了安全性,避免用户自己编写的类动态替换java的一些核心了类
  • 避免类的重复加载,因为JVM区分两个不同类不仅根据类名,也根据classLoader,相同的class文件被不同的ClassLoader加载就是不同的两个类

类加载过程

面试回答技巧:如果回答的不好的话可以说自己清楚对象的创建过程,可以说一下对象的创建过程。
总述:加载、连接(验证,准备,解析)、初始化、使用、卸载
1、加载:通过类名获取类的二进制字节流,并在堆中生成class对象
2、连接

  • 验证:对文件格式啥的进行验证
  • 准备:为类变量设置初始化值(这个类变量是在堆中,会随着Class对象的生成一起放堆中,如果是final修饰的直接指定值)
  • 解析:虚拟机将常量池内的符号引用替换为直接引用的过程。

3、初始化

  • new 对象,调用类的静态变量,静态方法
  • 对类进行反射调用时,例如Class.forName
  • 初始化一个类如果父类还没初始化时
  • 虚拟机启动时候,用户需要定义一个执行的主类(包含main方法的类)时

4、使用
5、卸载

  • 类没有被对应引用
  • 类的类加载器被GC
  • 所有类的实例被GC

垃圾回收

对象内存分配的原则

如何判断对象是否死亡

垃圾回收算法

垃圾回收器

后面的太多了,也记不住,面试的时候回答出来有哪些垃圾收集器就行了,不要梅话讲。
介绍
Serial:但线程,效率高单线程避免上下问切换,但是用户体验不好,运行的时候会停止其他工作线程,stop the word用户体验不好
parNew:Serial的改进多线程
Parallel Scanvenge :1.8默认,主要关注是吞吐量和对cpu的利用率。
Serial Old:serial收集器的老年代版本
Parallel old:Parallel Scavenge的老年代版本
CMS:是一种以获取最短回收停顿时间为目标的收集器,它是真正意义上的并发收集器,它第一次实现了让垃圾收集线程与用户线程(基本上)同时工作。非常适合在注重用户体验的应用上使用。
G1:不看
ZGC:jdk11推出的垃圾收集器

监控和故障处理工具

不需要全部都记住,记住几个常用的并知道能干啥就行

  • jmap:生成堆转储快照
  • jstack:生成虚拟机当前时刻的线程快照
  • jconsoleVisual VM:可视化的界面

JVM线上调优

没有经验,但可以说思路:每个
可以说一个公司大佬的调优案例,我学习了过来(毕竟三年工作经验,做好自己的定位,不要过分吹)

main方法的执行过程

  1. 类的加载检查(加载、连接初始化),双亲委派,加载到方法区
  2. 每个线程都有一个栈,调用方法的时候会创建一个栈帧,方法调用就相当于把方法压入栈内。里面局部变量表会存对象的引用,弹出之后对象没有引用就会被回收(如何判断对象死亡)

本文发布于:2024-03-05 08:20:24,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/1709652666122243.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

上一篇:面试刷题系统
下一篇:面试答题
标签:思路   JVM
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23