![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JVM
文章平均质量分 92
BoomR
立志进入bat的java程序员
展开
-
JVM-人人都懂常量池
一、静态常量池和运行时常量池 我们通过javap -v MyTest.class解析字节码文件 public class com.example.spring.jvmTest.MyTest minor version: 0 major version: 52 flags: ACC_PUBLIC, ACC_SUPER Constant pool: #1 = Methodref #6.#23 // java/lang/Object."<init>"原创 2021-04-04 23:29:50 · 200 阅读 · 2 评论 -
JVM-对象的组成以及内存分配
一、对象的组成 说到对象,我们第一反应想到的就是new一个对象,想当然的认为对象就仅仅是类的实例,其中包含类的成员变量。 我们可曾思考过,对象在JVM内部究竟是怎么组成的呢?内部又具体包含什么呢? 如果这里你有疑问,那么请耐心的往下看看 一个对象由三部分构成: 对象头: Mark Word、Klass Point、数组长度(如果是数组的话) 实例数据:类的实例信息 对齐填充:JVM要求Java对象的大小应该是8bit的倍数,这部分就是将对象大小补充为8bit的倍数 下面我们来看一张图: Mark原创 2021-04-04 17:31:20 · 433 阅读 · 5 评论 -
JVM-深入内存模型与GC
theme: juejin 一、JVM的组成 JVM = 类加载系统+运行时数据区+字节码执行引擎 如下图: 运行时数据区(JVM内存模型) 1. 方法区: JDK8之前方法区又叫永久代,8之后又改叫元空间,其中主要存放常量,静态变量,类元信息 2. 栈: 栈属于线程私有,一个线程一个栈 栈中又有栈帧,一个方法对应一个栈帧 栈帧中又包含局部变量表、操作数栈、动态链接、方法出口 3. 程序计数器: 程序计数器也是属于线程私有,在程序的运行过程中由字节码执行引擎来动态记录下一次要执行的机器码行数 4..原创 2021-03-28 17:47:57 · 236 阅读 · 0 评论 -
JVM-类加载机制的深度解析
注:本篇主要是讲加载过程,验证 >> 准备 >> 解析 >> 初始化 这个过程需要针对字节码文件+OpenJdk的源码进行梳理,时间原因,再加上我自己对C语言理解的也不够深,看OpenJdk源码实在太累,我们后面再补上。 1、类加载过程 多个java文件经过编译打包生成可运行jar包,最终由java命令运行某个主类的main函数启动程序,这里首先需要通过类加载器把主类加载到JVM。 主类在运行过程中如果使用到其它类,会逐步加载这些类。 注意:jar包里的类不是一次性全部加原创 2021-03-27 20:00:36 · 90 阅读 · 0 评论