![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JVM
文章平均质量分 91
JVM基础。
JinchaoLv
抄底上天台。
展开
-
JVM系列(4)——内存模型
4 内存模型 主要参考: 《JSR-133:Java内存模型与线程规范》; 《Java Language Specification 16》的 17.4 章节 Memory Model。 首先澄清运行时数据区和内存模型,这俩是完全不同的东西: 运行时数据区:规定了 JVM 在使用内存时,应该将其分为几个部分,每个部分分别存储什么数据,有什么特性; 内存模型:规定了在多线程场景下,程序以怎样的顺序执行是合法的。 4.1 经典用例 例一: //共享变量 x = 0, y = 0; //线程1执行 i原创 2021-04-13 19:33:02 · 326 阅读 · 1 评论 -
JVM系列(3)——运行时数据区
文章目录3 运行时数据区3.1 各区域的作用3.1.1 虚拟机栈3.1.2 本地方法栈3.1.3 程序计数器3.1.4 堆3.1.5 方法区3.1.6 运行时常量池3.2 栈帧3.3 直接内存3.4 内存溢出3.4.1 堆 OutOfMemoryError3.4.2 方法区 OutOfMemoryError3.4.3 栈 OutOfMemoryError3.4.4 栈 StackOverflowError3.4.5 直接内存 OutOfMemoryError 3 运行时数据原创 2021-03-29 22:19:31 · 296 阅读 · 0 评论 -
JVM系列(2)——字节码
2 字节码 主要参考 《Java虚拟机规范(Java SE 8)》。 这部分简单做个了解,有个大概印象。 2.1 class 文件结构总览 虽说是 class 文件,但其实字节码可以存在于任何地方,并不局限于 class 文件。当然,一般为了描述方便,统称为 class 文件。 一个完整的 class 文件包括以下信息: magic:魔数,4 字节,固定为 0xCAFEBABE,咖啡宝贝,呼应 Java 的咖啡 logo。没啥用,表示这是一个 class 文件。 minor_version:副版本号,原创 2021-03-26 03:39:55 · 204 阅读 · 0 评论 -
JVM系列(1)——概述
1 概述 JVM 这块,总体而言,既简单,又复杂。简单是因为它的职责很明确,逻辑结构很清晰。复杂是因为一旦涉及具体实现,其中细节极多,而且知识点比较零碎,难以形成体系。 1.1 什么是 JVM 当我们在说 JVM 时,我们可能在说下面三种不同的东西: JVM 规范:抽象的规范,不具体指哪个 JVM 产品; JVM 实现:只要符合 JVM 规范的都可以算是正确的 JVM 实现,比如 HotSpot; JVM 实例:一个 JVM 进程。 具体,要根据语境领会。 类比: //JVM 规范 public i原创 2021-03-10 02:47:10 · 178 阅读 · 0 评论