可以用wpf做网站吗,如何查看网站域名证书,做网站的要多少钱,网页设计与网站开发课程设计一、JVM基本结构
Java虚拟机#xff08;JVM, Java Virtual Machine#xff09;是Java程序执行的环境#xff0c;其基本结构可以分为以下几个主要部分#xff1a; 类加载器子系统#xff08;Class Loader Subsystem#xff09;#xff1a; 负责加载Java类文件到内存中。…一、JVM基本结构
Java虚拟机JVM, Java Virtual Machine是Java程序执行的环境其基本结构可以分为以下几个主要部分 类加载器子系统Class Loader Subsystem 负责加载Java类文件到内存中。它包括三个主要的类加载器引导类加载器、扩展类加载器和应用程序类加载器。类加载器采用双亲委派模型以确保Java类的安全性和一致性。 内存区Runtime Data Area: JVM在运行Java程序时会在内存中分配不同的区域来存储数据。主要包括 方法区Method Area存放类的结构信息如字段、方法、常量池等。堆区Heap Area用于存放对象实例和数组是Java内存管理的主要区域。Java栈Java Stack每个线程都有自己的Java栈用于存放局部变量、操作数栈、动态链接等信息。程序计数器Program Counter Register每个线程都有一个程序计数器用于指示当前线程执行的字节码指令地址。本地方法栈Native Method Stack用于支持Java调用本地方法Native Method。 执行引擎Execution Engine 负责执行字节码包括 解释器Interpreter逐行解释执行字节码。即时编译器JIT Compiler将热点代码编译为本地机器码以提高执行效率。垃圾回收器Garbage Collector负责自动管理内存回收不再使用的对象。 本地库接口Native InterfaceJava 程序可以调用本地代码从而实现对系统资源的直接访问或使用现有的本地库。
JVM的设计使得Java程序具有跨平台的特性即“编写一次到处运行”。通过将Java代码编译为字节码JVM能够在不同的操作系统和硬件平台上执行这些字节码。
二、JVM 内存区 ----- 两栈一器私有堆和方法区共享
1、堆线程共享 堆中存放几乎所有对象实例所有程序所创建的对象均保存在堆中。
2、Java虚拟机栈线程私有虚拟机栈存放的是各类基本数据类型和对象的引用包含四部分
局部变量表 存放了编译器可知的各种基本数据类型(8大基本数据类型)、对象引用。局部变量表所需的内存空间在编译期间完成分配当进入一个方法时这个方法需要在帧中分配多大的局部变量空间是完全确定的在执行期间不会改变局部变量表大小。简单来说就是存放方法参数和局部变量。操作栈每个方法会生成一个先进后出的操作栈。动态链接指向运行时常量池的方法引用。方法返回地址PC 寄存器的地址。
3、本地方法栈线程私有 本地方法栈和虚拟机栈类似只不过虚拟机栈是给JVM使用的本地方法栈是给本地方法使用的。
4、程序计数器线程私有每条线程都有自己的程序计数器用来记录代码执行到的位置行号
5、方法区线程共享 用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。
三、垃圾回收机制
JVM 垃圾回收机制--GC(Garbage Collection) 是 Java 虚拟机自动管理内存的一种方式旨在回收不再使用的对象以释放内存空间。以下是 JVM 垃圾回收机制的主要特点和工作原理
1. 垃圾回收的基本概念
垃圾对象指没有任何引用指向的对象这些对象无法再被程序访问。内存管理JVM 自动管理内存的分配和释放程序员无需手动释放内存。
2. 垃圾回收的工作原理
JVM 的垃圾回收通常通过以下几个步骤进行
标记首先JVM 会从根对象如栈中的局部变量、静态变量等开始遍历所有可达对象并标记这些对象为“活着”的对象。清除在标记阶段结束后JVM 会清除未被标记的对象释放其占用的内存。整理可选在某些垃圾回收算法中清除后会进行内存整理将存活的对象移动到一起以减少内存碎片。
3. 垃圾回收器
JVM 提供了多种垃圾回收器常见的包括
Serial GC单线程的垃圾回收器适用于小型应用。Parallel GC多线程的垃圾回收器提高了垃圾回收的效率。CMSConcurrent Mark-Sweep并发标记清除垃圾回收器减少停顿时间。G1Garbage-First能够同时进行垃圾回收和应用程序的执行适用于大内存应用。
4. 垃圾回收的触发
垃圾回收通常在情况下触发
当堆内存达到一定阈值时。当系统内存不足时。手动调用 System.gc()建议不使用因为并不能保证立即回收。
通过垃圾回收机制JVM 可以有效地管理内存减少内存泄漏和溢出的问题提高程序的稳定性和性能