JVM
JVM学习记录
Longer_Wish_C
这个作者很懒,什么都没留下…
展开
-
happens-before 关系
程序顺序规则: 在同一个线程中,代码 x = 1;中的 x = 1 操作 happens-before y = 2 操作。监视器锁规则: 一个线程获取了锁,执行了一些操作,然后释放了锁,另一个线程获取了同一个锁,那么释放锁的操作 happens-before。volatile 变量规则: 一个线程将一个 volatile 变量的值修改为 1,另一个线程读取该变量的值,那么写操作。它定义了哪些操作必须在哪些操作之前执行,从而避免了数据竞争和不一致性问题。happens-before 读操作。原创 2024-06-14 09:42:03 · 156 阅读 · 0 评论 -
元空间和方法区有什么不同
元空间并不在虚拟机内存中,而是使用本地内存(即操作系统的内存)。元空间不再有字符串常量池和类静态变量池,这些内容被移到了堆中。● 类的结构信息、方法信息。原创 2024-05-19 21:23:34 · 131 阅读 · 0 评论 -
Java类加载过程
加载是一个读取class文件,通过【类加载器】将class文件装载到jvm中的方法区内,并在JVM堆中生成一个便于用户调用的java.lang.Class类型的对象的过程。对class的成员变量、静态变量、静态代码块的赋值,如果有【实例化对象】,则会调用方法对实例变量进行初始化,并执行对应的构造方法内的代码。类加载主要分为以下五个阶段。原创 2024-05-19 21:12:31 · 195 阅读 · 0 评论 -
常量池和运行时常量池以及字符串常量池的区别
运行时常量池在类加载后被创建,它包括了类在编译期间静态生成的所有常量,以及运行期间动态生成的常量。运行时常量池具有动态性,不仅包括编译器编译的数据,还可能在运行时将新的常量放入池中,如String类的intern()方法。运行时常量池是常量池的运行时表示,属于方法区的一部分。每个加载到JVM的类或接口都有一个运行时常量池,用于存储编译期生成的各种字面量和符号引用的动态副本。如果不存在,新的字符串将被创建并放入池中。常量池是Java编译器生成的,存储在.class文件中的数据集合,它包含了类中所有的。原创 2024-05-10 10:09:17 · 256 阅读 · 0 评论