java堆栈面试题_Java(JVM)面试题分享

本文分享了关于Java虚拟机(JVM)的面试题,涵盖了JVM的组成、运行原理、堆栈的区别、类加载过程、对象回收条件以及垃圾回收器等内容,帮助读者深入了解Java内存管理和JVM工作机制。
摘要由CSDN通过智能技术生成

原标题: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)没有被其他任何实例访问的循环引用实例。

(3)Java 中有不同的引用类型。判断实例是否符合垃圾收集的条件都依赖于它的引用类型。

332acb41a6839d95c1116e1adb335b95.png

6、说一下JVM有哪些垃圾回收器?

答:(1)Serial收集器

(2)ParNew收集器

(3)Parallel Scavenge收集器

(4)Serial Old 和 Parellel Old

(5)Concurrent Mark Sweep收集器

责任编辑:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值