
jvm
文章平均质量分 88
impression1116
记录学习的点滴,分享心得,一步一个脚印的来
展开
-
【JVM逃逸分析】
只有当对象无法被拆解(如包含数组或复杂结构)且栈空间足够时,才可能选择栈上分配。实际开发中,标量替换是更常见的优化手段,而栈上分配的实现依赖于具体的 JVM 策略。如果对象未逃逸但无法被拆解为标量(例如包含复杂结构或数组),JVM 可能会直接在栈帧中分配内存,“在 Java 中,未逃逸的对象不一定会直接在栈上分配。,JVM 可能将其拆解为标量(Scalar)或直接分配在栈上,从而避免堆内存分配。:栈内存有限(默认 1MB),大对象无法栈上分配。:在栈上分配一块连续内存,模拟堆中对象的结构。原创 2025-03-02 23:08:56 · 547 阅读 · 0 评论 -
【垃圾回收】三色标记算法原理及应用
三色标记算法是一种用于垃圾回收的理论模型。**白色:**该对象没有被标记过,在标记开始时,堆内存中的对象都是白色的。标记结束后,仍为白色则被认为是垃圾对象。**灰色:**该对象已经被标记过(存活的对象,不会被清理),但该对象下引用的子对象没有全被标记完,表示这个对象正在枚举中。是一个过渡状态。**黑色:**该对象已经被标记过,该对象下引用的子对象也全被标记完(程序需要的对象)。三色标记过程:1、初始时,堆中所有对象都是白色2、从GC Roots开始枚举,它们所有的直接引用变为灰色,自己变为黑色。原创 2025-02-13 17:36:39 · 1188 阅读 · 0 评论 -
【方法区】运行时数据区——方法区
本质上是Java语言编译后代码 存储区域,它存储每一个类的结构信息,例如:运行时常量池、成员变量、方法数据、构造方法和普通 方法的字节码指令等内容。很多语言都有类似区域。方法区的具体实现有两种:永久代(PermGen)、元空间(Metaspace)Class信息:类型信息,比如Class(com.hero.User类)方法信息,比如Method(方法名称、方法参数列表、方法返回值信息)字段信息,比如Field(字段类型,字段名称需要特殊设置才能保存的住)类变量(静态变量)原创 2025-02-01 18:02:40 · 447 阅读 · 0 评论 -
【JAVA内存模型】缓存一致性协议与volatile关键字
为了缓解内存 和 CPU之间的速度差的问题, 现在计算机会在CPU上增加缓存,每个CPU内核都有自己的L1和L2高速缓存,CPU芯片上的CPU内核共享一个L3缓存。JAVA内存模型也是如此。CPU要读取一个数据时,首先从一级缓存中查找,如果没有找到再从二级缓存中查找,如果还是没有就从三级缓存或内存中查找,每个cpu有且只有一套自己的缓存。这就涉及到缓存一致性的问题。原创 2025-01-22 15:26:54 · 862 阅读 · 0 评论 -
【CAS原理概述】
CAS原理介绍原创 2025-01-20 19:29:00 · 417 阅读 · 0 评论