JVM
194.说一下 jvm 的主要组成部分?及其作用?
类加载器(ClassLoader)
运行时数据区(Runtime Data Area)
执行引擎(Execution Engine)
本地库接口(Native Interface)
组件的作用:首先通过类加载器(ClassLoader)会把Java代码转换成字节码,运行时数据区(RuntimeDataArea)再把字节码加载到内存中,而字节码文件只是JVM的一套指令集规范,并不能直接交个底层操作系统去执行,因此需要特定的命令解析器执行引擎(ExecutionEngine),将字节码翻译成底层系统指令,再交由CPU去执行,而这个过程中需要调用其他语言的本地库接口(NativeInterface)来实现整个程序的功能。
195.说一下 jvm 运行时数据区?
程序计数器、虚拟机栈、本地方法栈、堆、方法区
有的区域随着虚拟机进程的启动而存在,有的区域则依赖用户进程的启动和结束而创建和销毁。
196.说一下堆栈的区别?
1. 栈内存存储的是局部变量而堆内存存储的是实体;
2. 栈内存的更新速度要快于堆内存,因为局部变量的生命周期很短;
3. 栈内存存放的变量生命周期一旦结束就会被释放,而堆内存存放的实体会被垃圾回收机制不定时的回收。
197.队列和栈是什么?有什么区别?
队列和栈都是被用来预存储数据的。
队列允许先进先出