JVM知识点汇总
JVM(Java Virtual Machine)是Java虚拟机的缩写,它是Java程序运行的基础。下面是JVM的一些重要知识点总汇:
-
JVM的作用:JVM是Java程序的运行环境,它负责将Java字节码文件解释或者编译成机器码,并在操作系统上执行。
-
JVM的组成:JVM由三个主要的子系统组成:类加载器(ClassLoader)、运行时数据区(Runtime Data Area)和执行引擎(Execution Engine)。
-
类加载器:类加载器负责将Java字节码文件加载到内存中,并生成对应的Class对象。JVM中有三种类加载器:启动类加载器(Bootstrap ClassLoader)、扩展类加载器(Extension ClassLoader)和应用程序类加载器(Application ClassLoader)。
-
运行时数据区:运行时数据区是JVM用来存储程序运行时数据的区域。主要包括方法区、堆、栈、本地方法栈和程序计数器。
-
方法区:方法区用于存储类的结构信息,如类的字段、方法、常量池等。在JDK8及之前,方法区是永久代(Permanent Generation)的一部分,而在JDK8之后,方法区被移除,取而代之的是元空间(Metaspace)。
-
堆:堆是用于存储对象实例的区域。所有通过new关键字创建的对象都会被分配到堆上。堆可以分为新生代(Young Generation)和老年代(Old Generation)。
-
栈:栈用于存储方法的调用和局部变量。每个线程在运行时都会有一个独立的栈,栈中的数据是线程私有的。
-
本地方法栈:本地方法栈用于存储本地方法(Native Method)的调用和参数。
-
程序计数器:程序计数器用于记录当前线程执行的字节码指令地址。
-
执行引擎:执行引擎负责解释或者编译字节码,并执行相应的机器码。JVM中有两种执行引擎:解释器(Interpreter)和即时编译器(Just-In-Time Compiler,JIT)。
-
垃圾回收:JVM通过垃圾回收机制自动管理内存。垃圾回收器负责回收不再使用的对象,并释放内存空间。
-
JIT编译器:即时编译器将热点代码(HotSpot)编译成机器码,以提高程序的执行效率。