jvm面试题汇总

jvm重点:内存管理,垃圾回收,类加载机制

一、内存

内存分为哪几部分,分别都存储哪些数据?

Java的内存模型是怎么设计的?为什么要这么设计?

怎么定位内存溢出问题,怎么解决?

内存的哪些部分会参与GC的回收?

Java内存分代模型,GC算法,JVM常见的启动参数;

什么情况下会出现OOM(堆内存,永久区,堆外区,方法栈)

二、垃圾回收

强引用为什么不会被回收?如何声明,用在什么场景(其他三个同理)

什么时候一个对象会被GC?

为什么要在这种时候对象才会被GC?

GC策略都有哪些分类?分别都有什么优劣势?都适用于什么场景?

举个实际的场景,选择一个GC策略?为什么要选择这个策略?

一个对象从创建到销毁,怎么在这些里存活和转移的?

为什么要用软引用,不用redis?

改配置,缩短相应时间,为什么要改降低垃圾回收频率?

1.堆里面都怎么分?新生代,老年代。

2.新生代如何到老年代

3.string a=new string("b")

a在常量池,new 出来的放在堆里,b在栈里

4.elden区,策略,和运行机制

5.新生代垃圾回收策略

6.老年代回收策略

7.两种垃圾回收,实际用哪种?

8.标记清扫,为嘛要标记那些标记的东西?怎么找那些存活的标记?可达性分析算法

JVM内存结构,GC算法,CMS、G1的原理

1、JVM堆的基本结构。

2、JVM的垃圾算法有哪几种?CMS收集算法的流程?

8、CMS算法的过程,CMS回收过程中JVM是否需要暂停(这块回答较好,也可以只是看毕玄的Java分布式开发或网上文章的学习, 可以结合JVM启动参数常见配置,jstat等命令,看下动手能力,意愿;以及实际线上问题排查)

11、常用的GC策略,什么时候会触发YGC,什么时候触发FGC


jvm调优,用哪些工具调优

类加载实际应用解释原理,写过哪些类加载

Java类加载器都有哪些?

每个类加载器都加载哪些类?

这些类加载之间的父子关系是怎样的?

什么是双亲委派模型?为什么Java类加载器要使用双亲委派模型?

如何自定义自己的类加载器,它和Java自带的类加载器关系如何处理?

oom内存溢出

jvm调优方式

怎么定位内存溢出?

3、JVM有哪些常用启动参数可以调整?

4、如何查看JVM的内存使用情况?

5、Java程序是否会内存溢出?

6、你常用的JVM配置和调优参数都有哪些?分别什么作用?

你可能感兴趣的:(jvm面试题汇总)