java堆栈⾯试题_Java(JVM)⾯试题分享
原标题:Java(JVM)⾯试题分享
JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是⼀种⽤于计算设备的规范,它是⼀个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。
Java虚拟机有⾃⼰完善的硬件架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。
Java虚拟机本质是就是⼀个程序,当它在命令⾏上启动的时候,就开始执⾏保存在某字节码⽂件中的指令。Java语⾔的可移植性正是建⽴在Java虚拟机的基础上。任何平台只要装有针对于该平台的Java虚拟机,字节码⽂件(.class)就可以在该平台上运⾏。这就是“⼀次编译,多次运⾏”。
Java虚拟机不仅是⼀种跨平台的语⾔,⽽且是⼀种新的⽹络计算平台。该平台包括许多相关的技术,如符合开放接⼝标准的各种API、优化技术等。Java技术使同⼀种应⽤可以运⾏在不同的平台上。Java平台可分为两部分,即Java虚拟机(Java virtual machine,JVM)和Java API类库。
1、说⼀下JVM的组成和运⾏原理是什么?
答:
(1)JVM的组成:
JVM 由类加载器⼦系统、运⾏时数据区、执⾏引擎以及本地⽅法接⼝组成。
(2)JVM的运⾏原理:JVM是Java的核⼼和基础,在Java编译器和os平台之间的虚拟处理器。它是⼀种基于下层的操作系统和硬件平台并利⽤软件⽅法来实现的抽象的计算机,可以在上⾯执⾏java的字节码程序。java编译器只需⾯向JVM,⽣成JVM能理解的代码或字节码⽂件。Java源⽂件经编译器,编译成字节码程序,通过JVM将每⼀条指令翻译成不同平台机器码,通过特定平台运⾏。
2、说⼀下堆栈的区别?
答:(1)栈内存存储的是局部变量⽽堆内存存储的是实体;
(2)栈内存的更新速度要快于堆内存,因为局部变量的⽣命周期很短;
(3)栈内存存放的变量⽣命周期⼀旦结束就会被释放,⽽堆内存存放的实体会被垃圾回收机制不定时的回收。
3、队列和栈是什么?有什么区别?
答:队列(Queue):是限定只能在表的⼀端进⾏插⼊和另⼀端删除操作的线性表 。
栈(Stack):是限定之能在表的⼀端进⾏插⼊和删除操作的线性表。
(1)队列先进先出,栈先进后出。
(2)对插⼊和删除操作的"限定"不同。
(3)遍历数据速度不同。
4、说⼀下类加载的执⾏过程?
答:(1)⾸先加载要创建对象的类及其直接与间接⽗类。
(2)在类被加载的同时会将静态成员进⾏加载,主要包括静态成员变量的初始化,静态语句块的执⾏,在加载时按代码的先后顺序进⾏。
(3)需要的类加载完成后,开始创建对象,⾸先会加载⾮静态的成员,主要包括⾮静态成员变量的初始化,⾮静态语句块的执⾏,在加载时按代码的先后顺序进⾏。
(4)最后执⾏构造器,构造器执⾏完毕,对象⽣成。
5、怎么判断对象是否可以被回收?
答:Java对象符合以下条件便会被垃圾回收:
(1)所有实例都没有活动线程访问。
(2)没有被其他任何实例访问的循环引⽤实例。
jvm面试题总结及答案(3)Java 中有不同的引⽤类型。判断实例是否符合垃圾收集的条件都依赖于它的引⽤类型。
6、说⼀下JVM有哪些垃圾回收器?
答:(1)Serial收集器
(2)ParNew收集器
(3)Parallel Scavenge收集器
(4)Serial Old 和 Parellel Old
(5)Concurrent Mark Sweep收集器
责任编辑:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论