From bd6e2919413f34d544c27ebf25d34df3a8f6734b Mon Sep 17 00:00:00 2001 From: shbone <598924626@qq.com> Date: Tue, 5 Sep 2023 19:35:35 +0800 Subject: [PATCH] =?UTF-8?q?0905=E6=B7=BB=E5=8A=A0jvm=E7=AC=94=E8=AE=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- ...M\346\241\206\346\236\266\345\233\276.png" | Bin 0 -> 27297 bytes src/.vuepress/theme.ts | 4 +- src/posts/java/javap.md | 10 ++++ src/posts/java/jvm_structure.md | 50 +++++++----------- 5 files changed, 33 insertions(+), 33 deletions(-) create mode 100644 "src/.vuepress/public/assets/java/JVM\346\241\206\346\236\266\345\233\276.png" diff --git a/README.md b/README.md index 51a85fd..871c42a 100644 --- a/README.md +++ b/README.md @@ -5,5 +5,5 @@ 查看博客网址:[https://shbone.github.io/](https://shbone.github.io/) -## 图表选择 +## 图标选择 > https://theme-hope.vuejs.press/zh/guide/interface/icon.html \ No newline at end of file diff --git "a/src/.vuepress/public/assets/java/JVM\346\241\206\346\236\266\345\233\276.png" "b/src/.vuepress/public/assets/java/JVM\346\241\206\346\236\266\345\233\276.png" new file mode 100644 index 0000000000000000000000000000000000000000..9873dd4b6ebc850da8e086a87898ea78cde93d35 GIT binary patch literal 27297 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 KeYyB&zyAe&1)=%? literal 0 HcmV?d00001 diff --git a/src/.vuepress/theme.ts b/src/.vuepress/theme.ts index b33e245..2d3b351 100644 --- a/src/.vuepress/theme.ts +++ b/src/.vuepress/theme.ts @@ -25,8 +25,8 @@ export default hopeTheme({ medias: { // Baidu: "https://example.com", BiliBili: "https://space.bilibili.com/436323435", - Email: "598924626@qq.com", - GitHub: "https://example.com" + // Email: "598924626@qq.com", + GitHub: "https://github.com/shbone" }, }, diff --git a/src/posts/java/javap.md b/src/posts/java/javap.md index 90ddea6..92d9e3e 100644 --- a/src/posts/java/javap.md +++ b/src/posts/java/javap.md @@ -33,6 +33,16 @@ public class ConstPool { ``` 2. `javac ConstPool.java` 执行生成`ConstPool.class`二进制文件 3. `javap -c ConstPool.class` 反编译展示`java`字节码文件 + +::: tip + +二进制`.class`文件的组成 +- 类基本信息 +- 常量池 +- 类方法定义 + +::: + ```java Classfile /home/root1/sunhb/selflearn/SunSpring/src/main/java/com/sunhb/sunspring/JVM/ConstPool.class Last modified 2023-9-3; size 450 bytes diff --git a/src/posts/java/jvm_structure.md b/src/posts/java/jvm_structure.md index f926307..b0040d6 100644 --- a/src/posts/java/jvm_structure.md +++ b/src/posts/java/jvm_structure.md @@ -1,53 +1,51 @@ --- -title: JVM存储空间 +title: JVM内存结构 article: true icon: editor date: 2023-09-01 -category: +category: - JAVA学习 + tag: - - JAVA虚拟机 + - JVM内存结构 - JVM异常 --- +# JVM内存结构 -# JVM存储空间 +Java Virtual Machine(JAVA虚拟机,JVM)内存结构, 包括 **程序计数器,虚拟机栈,本地方法栈,方法区,堆几部分组成**。JVM的使用是为保证Java程序跨平台运行,在操作系统层次之上构建的虚拟机,以便实现一次编译,到处运行。 + -Java Virtual Machine(JAVA虚拟机,JVM)内存结构, 包括程序计数器,虚拟机栈,本地方法栈,堆几部分组成。JVM的使用是为保证Java程序跨平台运行,在操作系统层次之上构建的虚拟机,以便实现一次编译,到处运行。 +::: tip +- 参考:[JVM 核心知识点总结](https://tobebetterjavaer.com/jvm/zongjie.html#_1-3-hotspot-vm) - +::: +!["框架图"](/assets/java/JVM框架图.png "图1 JVM框架图") ## 1. 程序计数器PC -### 1.1 定义 -程序计数器用于存放执行指令的地方,可以**看成当前线程所执行的字节码的信号指示器。** 在线程的虚拟机栈中存储。 -### 1.2 作用 -程序计数器用来确定下一条指令执行的位置。 +程序计数器用于存放执行指令的地方,可以**看成当前线程所执行的字节码的信号指示器。** 在线程的虚拟机栈中存储。程序计数器用来确定下一条指令执行的位置。 -## 2. 虚拟机栈 Stack +## 2. 虚拟机栈 JVM Stack -### 2.1 定义 线程运行需要的内存空间,一个栈由多个栈帧组成,一个栈帧对应一个线程,栈帧的生命周期与线程相互对应,保存着参数、返回值、局部变量信息。 -### 2.2 栈内存溢出 - -### 2.3 线程运行诊断 -线程私有的 ::: tip -Xss 设置虚拟机栈大小 -报错 `stack overflow` +- 如果线程请求的栈深度大于虚拟机所允许的栈深度,将抛出`StackOverflowError`异常; +- 如果 Java 虚拟机栈的容量允许动态扩展,当栈扩展时如果无法申请到足够的内存会抛出 `OutOfMemoryError`异常 ::: ## 3. 本地方法栈 Native Method Stack -线程私有的 +本地方法栈(Native Method Stacks)与虚拟机栈类似,其区别在于:Java 虚拟机栈是为虚拟机执行 Java 方法(也就是字节码)服务,而本地方法栈则是为虚拟机使用到的本地(Native)方法服务,线程私有的。 + ## 4. 堆 Heap -线程公有的 +Java 堆(Java Heap)是虚拟机所管理的最大一块的内存空间,它被所有线程所共享,用于存放对象实例。Java 堆可以处于物理上不连续的内存空间中,但在逻辑上它应该被视为是连续的。Java 堆可以被实现成固定大小的,也可以是可扩展的,当前大多数主流的虚拟机都是按照可扩展来实现的,即可以通过最大值参数 `-Xmx` 和最小值参数 `-Xms` 进行设定。如果 Java 堆中没有足够的内存来完成实例分配,并且堆也无法再扩展时,Java 虚拟机将会抛出 `OutOfMemoryError` 异常。 ::: tip @@ -62,19 +60,11 @@ jconsole 查看JVM内存占用情况 ::: - - ## 5. 方法区 Method area -> JDK1.8之后 元空间的配置 -> XX:MaxMetaspaceSize = 8m - +方法区(Method Area)也是各个线程共享的内存区域,它用于存储已被虚拟机加载的类型信息、常量、静态变量、即时编译器编译后的代码缓存等数据。方法区也被称为 “非堆”,目的是与 Java 堆进行区分。《Java 虚拟机规范》规定,如果方法区无法满足新的内存分配需求时,将会抛出 `OutOfMemoryError` 异常。 +**运行时常量池(Runtime Constant Pool)是方法区的一部分,用于存放常量池表(Constant Pool Table)**,常量池表中存放了编译期生成的各种符号字面量和符号引用。 -### 5.1 常量池 -二进制`.class`文件的组成 -- 类基本信息 -- 常量池 -- 类方法定义