🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/?__c=1000,移动端可微信小程序搜索“历代文学”)总架构师,
15年
工作经验,精通Java编程
,高并发设计
,Springboot和微服务
,熟悉Linux
,ESXI虚拟化
以及云原生Docker和K8s
,热衷于探索科技的边界,并将理论知识转化为实际应用。保持对新技术的好奇心,乐于分享所学,希望通过我的实践经历和见解,启发他人的创新思维。在这里,我希望能与志同道合的朋友交流探讨,共同进步,一起在技术的世界里不断学习成长。
技术合作请加本人wx(注明来自csdn):foreast_sea
Java虚拟机面试题:引言
1. 什么是 JVM?
JVM
,也就是 Java
虚拟机,它是 Java
实现跨平台的基石。
Java
程序运行的时候,编译器会将 Java 源代码(.java
)编译成平台无关的 Java
字节码文件(.class
),接下来对应平台的 JVM
会对字节码文件进行解释,翻译成对应平台的机器指令并运行。
也就实现了 Java 一次编译,处处运行的跨平台性。
1.1 说说 JVM 的其他特性?
①、垃圾回收:JVM 可以自动管理内存,通过垃圾回收机制(Garbage Collection)释放不再使用的对象所占用的内存。
②、JIT:JVM 包含一个即时编译器(JIT Compiler),它在运行时将热点代码缓存到 codeCache 中,下次执行的时候不用再一行一行解释,而是直接执行缓存后的机器码,执行效率会提高很多。
③、多语言支持:任何可以通过 Java 编译的语言,比如说 Groovy、Kotlin、Scala 等,都可以在 JVM 上运行。
1.2 为什么要学习 JVM?
学习 JVM 可以帮助我们更好地优化程序性能、避免内存问题。
首先,了解 JVM 的内存模型和垃圾回收机制,可以帮助我们合理配置内存、减少 GC 停顿。
此外,掌握 JVM 的类加载机制可以帮助排查类加载冲突或异常。
JVM 还提供了很多调试和监控工具,比如使用 jmap 和 jstat 可以分析内存和线程的使用情况。
2. 说说 JVM 的组织架构
JVM 大致可以划分为三个部分:类加载器、运行时数据区和执行引擎。
① 类加载器
负责从文件系统、网络或其他来源加载 Class
文件,将 Class
文件中的二进制数据读入到内存当中。
② 运行时数据区
JVM 在执行 Java 程序时,需要在内存中分配空间来处理各种数据,这些内存区域主要包括方法区、堆、栈、程序计数器和本地方法栈。
③ 执行引擎
执行引擎是 JVM 的心脏,负责执行字节码。它包括一个虚拟处理器,还包括即时编译器(JIT Compiler
)和垃圾回收器(Garbage Collector
)。