面试官:我就问了一个JVM,没想到他能吹半个小时

前言:

作为 Java 的从业者,在找工作的时候,一定会被问及关于 JVM 相关的知识。 JVM知识的掌握程度,在很多面试官眼里是候选人技术深度的一个重要评判标准。 在这里我们将详细的整理常见的 JVM 面试题目,并给出标准答案,提供给大家学习参考。等大家面试的时候,希望能对面试官吹个半个小时,如果真是这样,我想说:牛皮啊!

另外本人整理收藏了20年多家公司面试知识点整理 ,以及各种Java核心知识点免费分享给大家,想要资料的话请点1065653031暗号CSDN。
在这里插入图片描述

在这里插入图片描述

1、内存模型以及分区,需要详细到每个区放什么。

JVM 分为堆区和栈区,还有方法区,初始化的对象放在堆里面,引用放在栈里面, class 类信息常量池(static 常量和 static 变量)等放在方法区 new:

  • 方法区:主要是存储类信息,常量池(static 常量和 static 变量),编译后的代码(字节码)等数据
  • 堆:初始化的对象,成员变量 (那种非 static 的变量),所有的对象实例和数组都要在堆上分配
  • 栈:栈的结构是栈帧组成的,调用一个方法就压入一帧,帧上面存储局部变量表,操作数栈,方法出口等信息,局部变量表存放的是 8大基础类型加上一个应用类型,所以还是一个指向地址的指针
  • 本地方法栈:主要为 Native 方法服务
  • 程序计数器:记录当前线程执行的行号

2. 堆里面的分区:Eden,survival (from+ to),老年代,各自的特点。

堆里面分为新生代和老生代(java8 取消了永久代,采用了 Metaspace),新生代包 含 Eden+Survivor 区,survivor 区里面分为 from 和 to 区,内存回收时,如果用的是复制算法,从 from 复制到 to,当经过一次或者多次 GC 之后,存活下来的对象会被移动到老年区,当 JVM 内存不够用的时候,会触发 Full GC,清理 JVM 老年区当新生区满了之后会触发 YGC,先把存活的对象放到其中一个 Survice 区,然后进行垃圾清理。因为如果仅仅清理需要删除的对象,这样会导致内存碎片,因此一般会把 Eden 进行完全的清理,然后整理内存。那么下次 GC 的时候, 就会使用下一个 Survive,这样循环使用。如果有特别大的对象,新生代放不下,就会使用老年代的担保,直接放到老年代里面。因为 JVM 认为,一般大对象的存活时间一般比较久远。

3. GC 的两种判定方法

  • 引用计数法:指的是如果某个地方引用了这个对象就
  • 32
    点赞
  • 180
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
面试JVM,需要以30分钟的时间,尽可能详细地涵盖其核心概念和运行机制。首先,我将从介绍JVM的定义和作用开始。 JVMJava虚拟机)是Java程序执行的平台,它通过将字节码翻译为本机代码来实现跨平台的特性。JVM是在操作系统上的虚拟计算机,可以执行Java程序,并负责内存管理、垃圾回收、线程管理、安全性等任务。 然后,我会简要介绍JVM架构JVM由三个主要组件组成:类加载器(Class Loader)、运行时数据区(Runtime Data Area)和执行引擎(Execution Engine)。类加载器负责将Java字节码从文件系统、网络等加载到运行时数据区。运行时数据区包括方法区、堆、栈、本地方法栈和程序计数器,用于存储程序执行期间的数据。执行引擎将字节码转化为机器码,使其能够在底层硬件上执行。 接下来,我会详细介绍垃圾回收机制。JVM通过垃圾回收机制自动管理内存,有效地回收不再使用的对象。主要的垃圾回收算法有标记-清除、复制、标记-整理等。我会解释这些算法的原理、优缺点,并介绍常见的垃圾收集器,如Serial、Parallel、CMS和G1。 然后,我会JVM的优化技术。包括即时编译器、分层编译、逃逸分析、锁消除等。我会介绍这些技术的原理和实现,以及如何通过它们提升Java程序的性能和效率。 最后,我会谈论关于性能调优的一些建议。我会涵盖一些常见的性能瓶颈、调优工具和技术,如监控工具、性能测试、堆分析等。我还会强调重要的最佳实践,如避免内存泄漏、合理使用线程和同步等。 通过这样一个30分钟的面试解,我能够全面介绍JVM的核心知识,包括其定义和作用、架构、垃圾回收机制、优化技术和性能调优建议。这样的解能够展示我对JVM的扎实理解和广泛知识背景,体现我在Java开发中的专业能力。
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值