提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言
相信很多小伙伴在面试的时候都会被问到这个问题,虽然知道入职后大概率是用不到,但是面试官就是喜欢问,主打的就是一个面试造火箭工作拧螺丝。
一、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的内容,欢迎留言补充。
码海无涯,回头是岸。