自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(8)
  • 收藏
  • 关注

原创 对象的组成

对象头有两部分:1是markword ,2是klass pointer(类型指针)对象头有两部分:1是markword ,2是klass pointer(类型指针)对象的大小:8字节的整数倍(一个对象最小占用内存16字节)普通对象有3部分组成。数组对象有4部分组成。

2023-02-27 16:32:47 594

原创 符号引用&直接引用

在java中,一个java类会变编译为字节码文件,在编译时,java类并不知道所引用类的实际地址(也就是直接引用),所以要用符号引用来代替,在编译完成后,类加载时,在解析这一步来将符号引用来转变为直接引用。例如:比如org.simple.People类引用了org.simple.Language类,在编译People类时并不知道Language类的实际内存地址,符号引用不会加载到虚拟机内存中,而直接引用是在内存中的。直接引用:也就是对象在堆中的真实的地址。

2023-02-27 00:18:53 2298

原创 线程如何在底层执行指令?

一条线程它有自己独立的栈和pc寄存器,寄存器的作用来存储字节码指令地址,它来告诉电脑要执行的下一条指令。这个注意,拿出来并不会清空局部变量表1位置的数据,而是方法执行完才会清除。表示把把操作数栈中的15拿出来,然后存入局部变量表1的位置。表示把局部变量表中2位置的数据拿出来,压到到操作数栈中。表示将操作数栈中的23拿出来,存放的局部变量表3的位置。表示把局部变量表中1位置的数据拿出来,放到操作数栈中。都是把先把8放入操作数栈,然后拿出来存到局部变量表。表示执行+操作,然后在操作数栈中得到23。

2023-02-25 22:59:39 121 1

原创 jvm内存图

jvm内存图

2023-02-25 21:51:29 84

原创 类加载的几个步骤

初始化:initialize(类初始化)即执行类初始化方法,大多数情况下,类的加载就完成了类的初始化,有些情况下,会延迟类的初始化。(里面存的是类的信息,例如类的属性,方法等等),为类变量(静态变量)赋默认值,为静态常量赋初始值。JVM将类加载到内存中,对类初始化的过程叫做类加载。解析:把字节码中的符号引用替换为对应的直接地址引用。将类型的class字节码数据读入内存。准备:在方法区准备对应的内存,

2023-02-25 21:42:49 147

原创 栈中存储什么?

方法出口:比如,在main方法中,会调用到add方法,add方法执行完,会接着执行main下面的代码,这个方法出口就是记录的main方法中掉用的add方法执行完后接着要执行的位置。类的加载分为5步:加载,验证,准备,解析,初始化,动态链接的过程就是在解析时进行的。栈中,存储的是一个一个的栈帧,栈帧存储的是什么呢?一条线程对应一个栈,一个方法对应一个栈帧。动态链接:将符号引用转为直接引用的过程。操作数栈:记录出栈、入栈的操作。局部变量表:存储的局部变量。

2023-02-25 21:31:37 980

原创 方法区位置的演变

Jdk1.6时,方法区在堆中,运行时常量池在方法区中。1.6之前,方法区称为永久代。1.8之后,方法区称为元空间。真正的实现要么是方法区要么是元空间。JDK1.7时,方法区依然在堆中,但是字符串常量池不再放到运行时常量池,而是直接挪到了堆中。方法区存储的静态变量也直接挪到了堆中。JDK1.8时,方法区挪到了本地内存,不在放到堆中,并且更名为元空间,静态变量与字符串常量池依然存到堆中。

2023-02-25 20:57:10 225

原创 字符串创建对象问题

字符串创建对象问题

2023-02-25 20:53:08 46

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除