主机托管网站,wordpress linux 重装,网址查询域名解析,做网站字体一般设置1. 定义与基本概念 - JVM#xff08;Java Virtual Machine#xff09;即Java虚拟机#xff0c;是Java程序的运行核心。它是一个虚构出来的计算机#xff0c;通过在实际的计算机上仿真模拟各种计算机功能来运行Java字节码。字节码是一种中间格式#xff0c;它使得Java程序能…1. 定义与基本概念 - JVMJava Virtual Machine即Java虚拟机是Java程序的运行核心。它是一个虚构出来的计算机通过在实际的计算机上仿真模拟各种计算机功能来运行Java字节码。字节码是一种中间格式它使得Java程序能够实现“一次编写到处运行”的特性。 2. 运行机制 - 类加载机制 - 包括加载、验证、准备、解析和初始化这几个阶段。加载阶段是将类的字节码文件加载到内存中验证阶段是确保字节码文件的正确性和安全性准备阶段是为类的静态变量分配内存并设置默认初始值解析阶段是将符号引用转换为直接引用初始化阶段是执行类构造器方法对类的静态变量进行赋值操作。 - 执行引擎 - 它负责执行字节码指令。有多种执行方式如解释执行和即时编译JIT。解释执行是逐行解释字节码并执行速度相对较慢。JIT编译器会在程序运行过程中将热点代码经常被执行的代码编译成机器码这样后续执行这些代码时就可以直接以机器码的速度运行大大提高了执行效率。 3. 内存结构 - 程序计数器 - 是一块较小的内存空间它可以看作是当前线程所执行的字节码的行号指示器。在多线程环境下每个线程都有自己独立的程序计数器用于记录当前线程执行的位置这样当线程切换回来时能够知道从哪里继续执行。 - Java虚拟机栈 - 每个Java方法在执行时都会创建一个栈帧用于存储局部变量表、操作数栈、动态链接、方法出口等信息。随着方法的调用和返回栈帧在虚拟机栈中入栈和出栈。它是线程私有的生命周期与线程相同。 - 本地方法栈 - 与Java虚拟机栈类似不过它是为本地Native方法服务的本地方法是用其他语言如C、C编写并通过JNIJava Native Interface调用的方法。 - 堆
- 是Java虚拟机所管理的内存中最大的一块它是所有线程共享的区域。主要用于存放对象实例和数组。垃圾收集器主要就是回收堆中不再使用的对象占用的空间以避免内存泄漏。 - 方法区 - 用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。它也是各个线程共享的内存区域。在Java 8之后永久代PermGen被元空间Metaspace取代元空间使用本地内存而不是虚拟机内存。 4. 垃圾回收GC - JVM的垃圾回收机制自动回收不再使用的对象所占用的内存空间。有多种垃圾回收算法如标记 - 清除算法、复制算法、标记 - 整理算法等。不同的垃圾回收器会采用不同的算法组合。例如Serial GC是一个单线程的垃圾回收器适合于单核CPU的小型应用Parallel GC是多线程的垃圾回收器可以提高垃圾回收的效率CMSConcurrent Mark SweepGC是一种以获取最短回收停顿时间为目标的垃圾回收器适用于对响应时间要求较高的应用。 5. 重要性和应用场景 - JVM的存在使得Java语言具有高度的可移植性开发人员可以专注于编写代码而不用担心底层操作系统和硬件的差异。它广泛应用于企业级应用开发、安卓应用开发Android使用了经过改造的JVM、大数据处理如Hadoop生态系统中的部分组件等众多领域。