言情小说尽在御龙小说网!御龙小说网手机版

小说首页 > 都市言情 > 蓝星文娱:从微末崛起的娱乐大亨 >第九章(JVM篇)2024年Java求职面试与工作编程要点实录23(1 / 2)
  • 手机阅读本书

第九章(JVM篇)2024年Java求职面试与工作编程要点实录23(1 / 2)

【JVM篇之4个核心问题】

二、JVM(4个)

1、JVM的原理?

在Java中,JVM(JavaVirtualMachine,Java虚拟机)是Java平台的核心组件。

它负责执行Java字节码,并在不同的操作系统和硬件平台上,提供一致的Java运行环境。

下面,从8个方面,简要介绍一下JVM的原理:

1)Java字节码

Java源代码(.java文件)首先被Java编译器(javac)编译成字节码(.class文件)。

这些字节码,是平台无关的,意味着它们可以在任何支持Java的平台上运行。

2)类加载

JVM中有一个类加载器(ClassLoader)。

它的任务是将字节码文件加载到JVM中,并转换成JVM可以执行的数据结构。

这个过程中,还会进行包括链接(验证、准备、解析)和初始化等步骤。

3)执行引擎

执行引擎负责解释(或即时编译)和执行字节码。

解释执行是指逐条读取字节码指令并执行。

而即时编译(JIT,Just-In-TimeCompiler)则是,将一部分频繁执行的字节码,编译成机器码,以提高执行效率。

4)内存管理

JVM管理着Java程序的内存,包括方法区、堆、栈、程序计数器以及本地方法栈等部分。

(1)方法区存放类元数据;

(2)堆是存放对象实例的地方;

(3)栈用于存放基本数据类型和对象引用;

(4)程序计数器记录当前线程执行的字节码位置;

(5)本地方法栈用于执行本地方法。

5)垃圾回收

JVM负责自动管理堆内存中的对象生命周期。

当对象不再被引用时,垃圾回收器会自动回收其占用的内存,防止内存泄漏。

6)本地方法接口

JVM提供了本地方法接口(JNI),允许Java代码与本地代码(如C、C++代码)进行交互。

7)JavaNativeInterface(JNI):

JNI使得Java代码,可以与其他语言写的代码,进行交互。

通过JNI,Java程序,可以调用本地方法库(通常是C或C++编写的)中的函数。

也可以,被其他语言写的程序调用。

8)安全性

JVM通过沙箱模型,提供了一定的安全性保障。

每个Java应用程序,都在自己的沙箱中运行,对系统资源的访问受到严格限制,从而防止恶意代码对系统造成损害。

以上,就是从8个方面,对JVM原理的介绍啦!

总结:

JVM通过字节码的执行、内存管理、垃圾回收等机制,为Java程序提供了一个稳定、安全、高效的运行环境。

这使得Java,成为一种跨平台的语言,能够在不同的操作系统和硬件平台上运行。

2、描述下Java虚拟机(JVM)的内存结构?

Java虚拟机(JVM)的内存结构,主要划分为五个部分,分别是:

方法区、堆、虚拟机栈、程序计数器和本地方法栈。

1)方法区

所有线程共享的内存区域,它用于存储已被虚拟机加载的类信息、常量、静态变量、以及及时编译器编译后的代码等数据。

当方法区无法分配足够内存时,将会抛出OutOfMemoryError异常。

在Java8中,方法区被实现为元空间(Metaspace)。

2)堆

Java虚拟机所管理的内存中最大的一块,是被所有线程共享的一块内存区域,虚拟机启动时创建。

堆内存主要用于存储引用类型的数据,如对象和数组。

全局只有一个堆内存,所有的线程共用一个堆内存。

它是垃圾收集器(GC)管理的主要区域。

3)虚拟机栈

每个线程在创建时,都会创建一个虚拟机栈。

其每个方法,在执行的同时,都会创建一个栈帧用于存储局部变量表、操作数栈、动态链接、方法出口等信息。

每一个方法,从调用直至执行完成的过程,就对应着一个栈帧,在虚拟机栈中入栈到出栈的过程。

4)程序计数器

是一块较小的内存空间,可以看作是当前线程,所执行的字节码的,行号指示器。

字节码解释器工作时,就是通过改变这个计数器的值,来选取下一条需要执行的字节码指令。

分支、循环、跳转、异常处理、线程恢复等基础功能,都需要依赖这个计数器来完成。

5)本地方法栈

与虚拟机栈所发挥的作用非常相似,其区别不过是虚拟机栈为虚拟机执行Java方法(也就是字节码)服务的。

而本地方法栈,则是为虚拟机使用到的Native方法服务。

在虚拟机规范中,对本地方法栈中的方法,使用的语言、使用方式与数据结构并没有强制规定,因此具体的虚拟机可以自由实现它。

理解JVM的内存结构,对于优化Java程序的性能、解决内存溢出等问题,具有重要意义。

3、谈谈JVM中的类加载过程?

在Java虚拟机(JVM)中,类加载过程是一个重要的环节。

它负责将类的字节码文件,加载到内存中,并进行校验、转换解析和初始化…

最终,形成可以被虚拟机,直接使用的Java类型。

小提示:按 回车[Enter]键 返回章节目录,按 ←键 返回上一页, 按 →键 进入下一页。
查看目录