华为OD面试真题题库
专栏:华为OD面试真题题库
目录: 最新华为OD面试手撕代码真题目录以及八股文真题目录
1. 什么是jvm
JVM(Java虚拟机)是一个可以执行Java字节码的抽象机器。它是Java运行时环境的一部分,主要负责解释执行编译后的Java程序代码,提供一个平台无关的运行环境,使得Java程序可以在多种操作系统上运行而无需修改。JVM是Java语言的核心部分,使得Java具有“一次编写,到处运行”的特性。
JVM主要包括以下几个核心组件:
- 类加载器(Class Loaders):负责加载Java类文件到运行时数据区。
- 运行时数据区(Runtime Data Areas):存储在JVM内存中的数据,包括堆(Heap)、栈(Stack)、方法区(Method Area)、程序计数器(Program Counter Register)等。
- 执行引擎(Execution Engine):负责执行类文件中的指令。它可以通过解释执行(逐条将字节码转换成机器码)或即时编译(将字节码转换为本地机器码,然后直接执行)来运行代码。
- 本地库接口(Native Interface):连接Java和底层操作系统的接口,允许Java调用或被操作系统调用。
- 垃圾回收器(Garbage Collector):自动管理内存,回收不再被使用的对象所占用的内存。
2. 什么是gc
GC,即垃圾回收(Garbage Collection),是Java虚拟机(JVM)的一个重要部分,用于自动管理内存。在Java中,程序员不需要像在C或C++那样手动管理内存,这降低了内存泄露和指针错误的风险。
垃圾回收的主要目的是识别并且回收那些不再被程序使用的对象占据的内存空间,从而使得这些空间能被重新利用。Java中的垃圾回收过程通常包括以下几个步骤:
-
标记(Marking):这一步骤涉及到识别所有从根集(包括全局引用和活跃线程的栈帧中的本地引用)可达的对象。任何从根集可达的对象都被认为是活跃的,不应该被回收。
-
清除(Sweeping):在标记阶段之后,GC将清除那些未被标记的对象,释放它们占用的内存空间。
-
压缩(Com