JVM分代内存模型:新生代 vs 老年代 vs 永久代/元空间


🌱 JVM分代内存模型:新生代 vs 老年代 vs 永久代/元空间 🧠作为JVM内存管理的核心设计,分代收集理论建立在弱分代假说上:“绝大多数对象的生命周期都很短,只有少数对象会长期存活”我们通过内存划分和不同的GC策略,显著提升垃圾回收效率。下面是结构化详解:一、JVM内存区域的逻辑划分 📦

JVM-为什么使用元空间替代永久代?


1. 决绝永久代内存空间限制问题,降低OOM风险永久代是JVM堆内存的一部分,大小固定且需要通过参数手动设置,难以根据应用实际需求动态调整,加载大量类或者使用大量反射的时候,永久代容易发生内存溢出,调优复杂2. 提高垃圾回收效率,降低Full GC频率永久代的垃圾回收与老年代绑定,且永久代中存放的类

JVM

JVM  Java 

程序计数器 PC记录下一条jvm指令的执行地址特点:每个线程有自己的程序计数器不会存在内存溢出虚拟机栈 JVM STACKS线程运行所需要的内存空间,称为虚拟机栈每个栈由多个栈帧组成,对应着每次方法调用的时候所占用的内存每个线程只能有一个活动的栈帧,对应着当前正在执行的那个方法栈帧每个方法运行时所需

Java中有哪些集合类,简单介绍


Java中有哪些集合类,简单介绍Java中的集合类主要分为两大类: Collection接口和Map接口实现Collection接口的类是存储对象的集合类实现Map接口存储的是键值对Collection接口下又分为List,Set,Queue接口List接口ArrayList: 基于动态数组,查询速

ReentrantLock 核心设计中的两个等待队列

笔记  JUC  Java 

理解这两个队列是掌握 ReentrantLock 乃至整个 Java 并发包(JUC)中锁机制的关键。这两个队列都由 ReentrantLock 的内部工具类 AbstractQueuedSynchronizer (简称 AQS) 来管理。简单来说,这两个队列是:同步队列 (Sync Queue):

AQS

笔记  JUC  Java 

讲讲AQS简单说AQS就是起到了一个抽象,封装的作用,将一些排队,入队,加锁,中断等方法提供出来,便于其它相关JUC锁的使用,具体加锁时机,入队时机等都需要实现类自己控制。英文全称 是AbstractQueuedSynchronizer,AQS的核心是一个FIFO的双向队列,队列中的每个节点都代表一

HashMap的原理

Java 

说说HashMap的原理HashMap是基于哈希表的数据结构,用于存储键值对。核心是将键的哈希值映射到数组索引位置,通过数组+链表+红黑树来解决哈希冲突。HashMap使用键的hashCode()方法计算哈希值,通过(n-1) &hash确定元素在数组中的存储位置。哈希值是经过一定的扰动处理

nacos安装

笔记  Java 

➜ ~ docker run --name nacos-standalone-derby -e MODE=standalone -e NACOS_AUTH_TOKEN=bWVvd3JhaW55eWRzNjY2Nm1lb3dyYWlueXlkczY2NjY= -e NACOS_AUTH_IDENTI

ThreadPoolExecutor 任务处理的核心流程

笔记  JUC  Java 

新任务来了!检查当前运行的线程数是否少于 corePoolSize (核心线程数):如果少于:线程池会直接创建新的核心线程来执行这个任务。任务不会进入 workQueue。如果不小于(即已经达到或超过 corePoolSize):进入下一步。尝试放入 workQueue (任务队列):线程池会尝试将

怎么设置线程池大小?

笔记  JUC  Java