Java面试题(JVM篇)

本文详细探讨了Java虚拟机(JVM)的主要组成部分,包括类加载器、运行时数据区、执行引擎、本地库接口及其各自的作用。阐述了JVM运行时数据区的构成,如程序计数器、虚拟机栈、本地方法栈、堆和方法区。解释了堆和栈的区别,并介绍了双亲委派模型的工作原理。文章还涵盖了类加载的五个步骤,以及对象是否可以被回收的判断方法。此外,讨论了JVM的垃圾回收算法和垃圾回收器,如CMS、G1等,并提到了常用的JVM调优工具和参数。
摘要由CSDN通过智能技术生成

JVM

194.说一下 jvm 的主要组成部分?及其作用?

类加载器(ClassLoader)

运行时数据区(Runtime Data Area)

执行引擎(Execution Engine)

本地库接口(Native Interface)

组件的作用:首先通过类加载器(ClassLoader)会把Java代码转换成字节码,运行时数据区(RuntimeDataArea)再把字节码加载到内存中,而字节码文件只是JVM的一套指令集规范,并不能直接交个底层操作系统去执行,因此需要特定的命令解析器执行引擎(ExecutionEngine),将字节码翻译成底层系统指令,再交由CPU去执行,而这个过程中需要调用其他语言的本地库接口(NativeInterface)来实现整个程序的功能。

195.说一下 jvm 运行时数据区?

程序计数器、虚拟机栈、本地方法栈、堆、方法区

有的区域随着虚拟机进程的启动而存在,有的区域则依赖用户进程的启动和结束而创建和销毁。

b2c717f0e205a71a9a875927984e979c.png

196.说一下堆栈的区别?

1. 栈内存存储的是局部变量而堆内存存储的是实体;

2. 栈内存的更新速度要快于堆内存,因为局部变量的生命周期很短;

3. 栈内存存放的变量生命周期一旦结束就会被释放,而堆内存存放的实体会被垃圾回收机制不定时的回收。

197.队列和栈是什么?有什么区别?

队列和栈都是被用来预存储数据的。

队列允许先进先出

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值