From 87b0e069d36a9ab41528fa5c9b0ac12a92ae2964 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9D=8E=E4=BA=9A=E6=A5=A0?= <1206054578@qq.com>
Date: Fri, 8 Mar 2024 09:39:29 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=9F=90=E4=BA=9B=E5=9B=BE?=
=?UTF-8?q?=E7=89=87=E7=9A=84=E5=AE=BD=E5=BA=A6?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
source/_posts/other/java程序启动时都发生了什么.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/source/_posts/other/java程序启动时都发生了什么.md b/source/_posts/other/java程序启动时都发生了什么.md
index 5152628..3a7d727 100644
--- a/source/_posts/other/java程序启动时都发生了什么.md
+++ b/source/_posts/other/java程序启动时都发生了什么.md
@@ -16,7 +16,7 @@ cover:
2. java虚拟机创建一个引导类加载器,并使用它加载sun.misc.Launcher类
3. Launcher类创建一些其他的类加载器,比如appclassloader,随后appclassloader会去加载Main.class类。 其中main class是从jar包中的MANIFEST.MF文件找到的。
-
+
加载的过程如下:
1. 首先把类从硬盘加载到jvm内存,具体是在方法区
@@ -25,7 +25,7 @@ cover:
4. 随后进行解析,把类内部的符号变量替换为一些静态地址.
5. 最后进行初始化,对静态变量赋予初始值。
-
+
> 个人理解:
> 类加载过程就是读取.class文件到内存中,将其放在方法区内,然后在Java堆区创建一个java.lang.Class对象,通过Class对象来访问方法区中类的数据结构。类加载的最终产品是位于堆区中的Class对象,Class对象封装了类在方法区内的数据结构,并且向Java程序员提供了访问方法区内的数据结构的接口。