请加照片说明
JVM在面试中一直是绕不开的坎。所以我们要征服它。本文整理了阿里两面出现的JVM相关面试题,希望对你有帮助。
一、问题
1.JVM内存模型、GC机制和原理;2.GC分为哪两种,Minor GC和Full GC有什么区别?什么时候触发Full GC?分别使用什么算法?3.JVM有几种classloader,为什么有几种?什么是父母任命机制?介绍了一些操作过程,家长委托模式的优点。在什么情况下,我们要破坏父母委托模式?常见的JVM调整方法是什么?哪些参数可以具体调整,哪些值可以调整?7.如何分析JVM虚拟机内存分区、类加载程序、垃圾收集算法、垃圾收集程序、类文件结构
二、答案
1.Q1
问题:JVM内存模型、GC机制和原理。首先看一下内存型号:内存型号
Jdk1.6和更早版本:永久层代、常量池有方法区域Jdk1.7:永久层代,但已逐渐“删除永久层代”。常量池在堆Jdk1.8和之后:无永久层代;常量池在元空间中插入图片说明。
在此插入图片说明
2.Q2
问:GC分为哪两种,Minor GC和Full GC有什么区别?什么时候触发Full GC?分别使用什么算法?
在此插入图片说明
我们先来看看定义。
个体在新生代地区消失的过程,我们认为“Minorgc”个体在旧时代地区消失的过程,我们称之为“Majorgc”Minorgc的整个YouGen的整理过程,Eden的清理,S0S1的整理,都是Minorgo Allocs造成的。
Major GC OldGen区域内存不足,触发Major GC
全GC全GC是清洁整个堆空间,包括年轻一代和永久一代
完全GC触发场景
CONCURRENT-MODE(SYPROMOTIOTION FAILED)分为2 .如果GC线程与用户线程同时运行,则用户线程仍然可以同时生成垃圾,如果这些垃圾更多,无法放入保留空间,则可以生成CMS-Mode-Failure,切换到SerialOld单线程,生成mark-sweep
新生代晋升的平均值很大
小大于老年代的剩余空间 (为了避免新生代晋升到老年代失败) 当使用G1,CMS 时,FullGC发生的时候 是 Serial+SerialOld。 当使用ParalOld时,FullGC发生的时候是 ParallNew +ParallOld.
3.Q3
问题:JVM里的有几种classloader,为什么会有多种?
- 启动类加载器:负责加载JRE的核心类库,如jre目标下的rt.jar,c等
- 扩展类加载器:负责加载JRE扩展目录ext中JAR类包
- 系统类加载器:负责加载ClassPath路径下的类包
- 用户自定义加载器:负责加载用户自定义路径下的类包
为什么会有多种?
- 分工,各自负责各自的区块
- 为了实现委托模型
4.Q4
问题:什么是双亲委派机制?介绍一些运作过程,双亲委派模型的好处;
如果一个类加载器收到了类加载请求,它并不会自己先去加载,而是把这个请求委托给父类的 加载器去执行,如果父类加载器还存在其父类加载器,则进一步向上委托,依次递归,请求最终将到达顶层的启动类加载器,如果父类加载器可以完成类加载任务,就成功返回,倘若父类加载 器无法完成此加载任务,子加载器才会尝试自己去加载,这就是双亲委派模式,即每个儿子都不愿意干活,每次有活就丢给父亲去干,直到父亲说这件事我也干不了时,儿子自己想办法去完 成,这不就是传说中的双亲委派模式。
在这里插入图片描述
双亲委派的好处: 沙箱安全机制:自己写的S类不会被加载,这样便可以防止核心API库被随意篡改 避免类的重复加载:当父亲已经加载了该类时,就没有必要子ClassLoader再加载一次 。
5.Q5
问题:什么情况下我们需要破坏双亲委派模型? 双亲委托有个弊端:
- 不能向下委派,不能不委派
怎么打破双亲委派机制:(也就是能向下委派和不委派)
- 自定义类加载器(不委派)
- spi机制(向下委派)
打破双亲委派的两种方式:
- 通过spi机制,使用ServiceLoader.load去加载
- 通过自定义类加载器,继承classloader,重写loadclass方法
6.Q6
问题:常见的JVM调优方法有哪些?可以具体到调整哪个参数,调成什么值?
调优工具 console,jProfile,VisualVM ,Dump线程详细信息:查看线程内部运行情况
死锁检查
查看堆内类、对象信息查看:数量、类型等
线程监控
线程信息监控:系统线程数量。 线程状态监控:各个线程都处在什么样的状态下
热点分析
CPU热点:检查系统哪些方法占用的大量CPU时间 内存热点:检查哪些对象在系统中数量最大(一定时间内存活对象和销毁对象一起统计)
7.Q7
问题:JVM虚拟机内存划分、类加载器、垃圾收集算法、垃圾收集器、class 文件结构是如何解析的
JVM虚拟机内存划分(上面) 类加载器(上面) 垃圾收集算法:标记-清除算法、复制算法、标记-整理算法、分代收集算法 垃圾收集器: Serial收集器、ParNew收集器、Parallel Scavenge收集器、Serial Old收集器、 Parallel Old收集器、CMS收集器、G1收集器、Z垃圾收集器 文件结构:Class文件结构
请添加图片描述
1.文章《【奥迪q3显示死锁怎么解】阿里双面JVM采访真题》援引自互联网,为网友投稿收集整理,仅供学习和研究使用,内容仅代表作者本人观点,与本网站无关,侵删请点击页脚联系方式。
2.文章《【奥迪q3显示死锁怎么解】阿里双面JVM采访真题》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
相关推荐
- . 现代买票为什么带上携程保险
- . 潮阳怎么去广州南站
- . 湖南马拉河怎么样
- . 烧纸为什么到三岔路口
- . 百色为什么这么热
- . 神州租车怎么样
- . 芜湖方特哪个适合儿童
- . 护肤品保养液是什么类目
- . 早晚的护肤保养有哪些项目
- . 女孩护肤品怎么保养的最好