JVM面试高频问题(下)

简介: JVM面试高频问题(下)

我们对上面的一些名词做一些解释


一、什么样的变量可以可以称为起点(GCRoot)呢?


1、局部变量表中的对对象的引用(栈里面的局部变量,栈有多个,每个线程一个,每个栈里面又有很多的栈帧,每个栈帧里有一个自己的局部变量表。)

意思就是:所有线程的所有栈的所有栈帧的所有的局部变量表中的全部的变量,都可视为GCRoot.

2、常量池中对应的对象

3、方法区中,静态引用类型的成员


二、什么叫做”能够被访问到“?


d821bb00ca43443cb7be52e2f8c4199b.png

3、确定要回收的对象后,如何具体进行垃圾回收?

有以下几个笔记经典的垃圾回收算法(策略)


1、标记-清除


958e28d9363a4022936527606b49fe0d.png

2、复制算法(为了解决内存碎片化问题)


32c9b3018b5a43b0bd4e963729fdce41.png


3、标记整理(类似于顺序表删除元素)


a57cc481a07244c1a4c0da949aa5148f.png


4、分代回收

dafb429947be47989561581f1ae9a57c.png总结:

在伊甸区,新生的对象,如果活过了一轮GC(一轮GC以及把大部分对象给回收了,活过一轮GC的是少数),就把这些幸存的对象放到幸存区(因为对象少,所以幸存区的空间不大

幸存区的对象使用复制算法,因为数量较少,即使浪费了一半的内存也没关系。

老年代的对象使用标记整理算法,因为老年代对象他被回收的频率不高,就可以接收标记整理带来的开销


再述分代回收


ef403d0068c943fd81c0b2fb0417a70c.png

939e8d35e3324625814b4bb34754909f.png

四、 有关JVM的常见选择题目

GC Roots的判断


8246c729ee1d49aebbb8a38aae3b9f41.png

JVM的实现


5db0da1a69874c41883eec3748541037.png

类加载器


5c526dddc6cd42b7972858e904f66f70.png



5c526dddc6cd42b7972858e904f66f70.png

垃圾回收器和垃圾回收算法的区别

eb2be430f161463c928b7a59962378a2.png

JVM内存划分

8f358b9eee924758a1850431f1163428.png



相关文章
|
1月前
|
SQL 缓存 监控
大厂面试高频:4 大性能优化策略(数据库、SQL、JVM等)
本文详细解析了数据库、缓存、异步处理和Web性能优化四大策略,系统性能优化必知必备,大厂面试高频。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
大厂面试高频:4 大性能优化策略(数据库、SQL、JVM等)
|
23天前
|
存储 算法 安全
JVM常见面试题(四):垃圾回收
堆区域划分,对象什么时候可以被垃圾器回收,如何定位垃圾——引用计数法、可达性分析算法,JVM垃圾回收算法——标记清除算法、标记整理算法、复制算法、分代回收算法;JVM垃圾回收器——串行、并行、CMS垃圾回收器、G1垃圾回收器;强引用、软引用、弱引用、虚引用
|
1月前
|
Arthas 监控 Java
JVM进阶调优系列(9)大厂面试官:内存溢出几种?能否现场演示一下?| 面试就那点事
本文介绍了JVM内存溢出(OOM)的四种类型:堆内存、栈内存、元数据区和直接内存溢出。每种类型通过示例代码演示了如何触发OOM,并分析了其原因。文章还提供了如何使用JVM命令工具(如jmap、jhat、GCeasy、Arthas等)分析和定位内存溢出问题的方法。最后,强调了合理设置JVM参数和及时回收内存的重要性。
|
2月前
|
存储 监控 算法
美团面试:说说 G1垃圾回收 底层原理?说说你 JVM 调优的过程 ?
尼恩提示: G1垃圾回收 原理非常重要, 是面试的重点, 大家一定要好好掌握
美团面试:说说 G1垃圾回收 底层原理?说说你 JVM 调优的过程  ?
|
3月前
|
安全 Java 应用服务中间件
JVM常见面试题(三):类加载器,双亲委派模型,类装载的执行过程
什么是类加载器,类加载器有哪些;什么是双亲委派模型,JVM为什么采用双亲委派机制,打破双亲委派机制;类装载的执行过程
102 35
JVM常见面试题(三):类加载器,双亲委派模型,类装载的执行过程
|
2月前
|
Java 应用服务中间件 程序员
JVM知识体系学习八:OOM的案例(承接上篇博文,可以作为面试中的案例)
这篇文章通过多个案例深入探讨了Java虚拟机(JVM)中的内存溢出问题,涵盖了堆内存、方法区、直接内存和栈内存溢出的原因、诊断方法和解决方案,并讨论了不同JDK版本垃圾回收器的变化。
34 4
|
2月前
|
Java API 对象存储
JVM进阶调优系列(2)字节面试:JVM内存区域怎么划分,分别有什么用?
本文详细解析了JVM类加载过程的关键步骤,包括加载验证、准备、解析和初始化等阶段,并介绍了元数据区、程序计数器、虚拟机栈、堆内存及本地方法栈的作用。通过本文,读者可以深入了解JVM的工作原理,理解类加载器的类型及其机制,并掌握类加载过程中各阶段的具体操作。
|
2月前
|
存储 缓存 JavaScript
JVM面试真题总结(一)
JVM面试真题总结(一)
|
3月前
|
存储 缓存 监控
【Java面试题汇总】JVM篇(2023版)
JVM内存模型、双亲委派模型、类加载机制、内存溢出、垃圾回收机制、内存泄漏、垃圾回收流程、垃圾回收器、G1、CMS、JVM调优
【Java面试题汇总】JVM篇(2023版)
|
2月前
|
存储 Kubernetes 架构师
阿里面试:JVM 锁内存 是怎么变化的? JVM 锁的膨胀过程 ?
尼恩,一位经验丰富的40岁老架构师,通过其读者交流群分享了一系列关于JVM锁的深度解析,包括偏向锁、轻量级锁、自旋锁和重量级锁的概念、内存结构变化及锁膨胀流程。这些内容不仅帮助群内的小伙伴们顺利通过了多家一线互联网企业的面试,还整理成了《尼恩Java面试宝典》等技术资料,助力更多开发者提升技术水平,实现职业逆袭。尼恩强调,掌握这些核心知识点不仅能提高面试成功率,还能在实际工作中更好地应对高并发场景下的性能优化问题。