经典面试题之--什么叫JVM,JVM有哪些常见算法

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

相信很多小伙伴在面试的时候都会被问到这个问题,虽然知道入职后大概率是用不到,但是面试官就是喜欢问,主打的就是一个面试造火箭工作拧螺丝。


一、JVM是什么?

在Java中,JVM是Java虚拟机的缩写,是Java程序的运行环境。JVM是Java的核心组件之一,它负责解释Java字节码并将其转换为机器码,使得Java程序可以在不同的平台上运行。JVM还提供了垃圾回收、内存管理、线程管理等功能,使得Java程序更加高效、稳定和安全。JVM是Java跨平台的关键所在,它使得Java程序不需要重新编译就可以在不同的操作系统和硬件上运行。

二、JVM中有什么常见算法

1.标记清除算法(Mark and Sweep Algorithm)

标记清除算法(Mark and Sweep Algorithm)是一种垃圾回收算法,用于回收不再使用的对象。该算法通过标记所有不再使用的对象,然后清除这些对象来回收内存。具体来说,算法分为两个阶段:标记阶段和清除阶段。在标记阶段,算法会遍历所有的对象,并标记那些仍然被引用的对象。在清除阶段,算法会清除未被标记的对象,并将它们的内存空间释放出来。然而,标记清除算法会产生内存碎片,可能导致分配失败。因此,它不是最优秀的垃圾回收算法,但是在某些情况下可以提供一定程度的回收效率

2.复制算法(Copying Algorithm)

复制算法(Copying Algorithm)是一种垃圾回收算法,用于回收不再使用的对象。该算法将内存分成两个区域,每次只使用其中一个区域。当这个区域用完后,将存活的对象复制到另一个区域中,然后清除原来的区域。该算法不会产生内存碎片,但是需要更多的内存空间。具体来说,算法分为两个阶段:复制阶段和清除阶段。在复制阶段,算法会将存活的对象复制到另一个区域中。在清除阶段,算法会清除原来的区域,并将它们的内存空间释放出来。由于每次只使用其中一个区域,因此该算法需要两倍的内存空间。但是,由于该算法不会产生内存碎片,因此可以提高回收效率

3.标记整理算法(Mark and Compact Algorithm)

标记整理算法(Mark and Compact Algorithm)是一种垃圾回收算法,用于回收不再使用的对象。该算法将存活的对象移动到内存空间的一端,然后清除另一端的所有未被标记的对象。具体来说,算法分为三个阶段:标记阶段、整理阶段和清除阶段。在标记阶段,算法会遍历所有的对象,并标记那些仍然被引用的对象。在整理阶段,算法会将所有存活的对象移动到内存空间的一端,以便在清除阶段中更容易清除未被标记的对象。在清除阶段,算法会清除另一端的所有未被标记的对象,并将它们的内存空间释放出来。该算法可以有效地解决内存碎片问题,但是需要更多的时间来移动存活的对象。

4.分代算法(Generational Algorithm)

分代算法(Generational Algorithm)是一种垃圾回收算法,用于回收不再使用的对象。该算法基于一个假设,即大部分对象的生命周期很短,而只有少数对象的生命周期很长。因此,该算法将内存空间分成不同的代,每个代包含不同生命周期的对象。通常,内存空间被分成两个代:年轻代和老年代。年轻代包含新创建的对象,而老年代包含已经存活了一段时间的对象。在年轻代中,采用复制算法来回收垃圾,因为大部分对象的生命周期很短,因此很容易将存活的对象复制到另一个区域中。在老年代中,采用标记整理算法来回收垃圾,因为老年代中的对象生命周期较长,因此需要更复杂的算法来回收垃圾。分代算法可以提高回收效率,因为它可以根据对象的生命周期来选择合适的回收算法。


等等…

总结

以上就是今天要讲的内容,本文仅仅简单介绍了JVM的内容,欢迎留言补充。
码海无涯,回头是岸。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值