自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 行锁、间隙锁、临键锁

INSERT INTO users (id, name) VALUES (4, '张三');INSERT INTO users (id, name) VALUES (6, '李四');INSERT INTO users (id, name) VALUES (4, '张三');-- 锁定间隙:(3,5), (5,7), (7, +∞)-- 假设users表有数据:id=1, 3, 5, 7。-- 假设users表有数据:id=1, 3, 5, 7。-- - 间隙锁:(3,5), (5,7)

2025-11-21 19:24:29 226

原创 Thread使用及一些陷阱

场景是否线程安全原因值对象✅ 安全每次修改都创建新对象独立可变对象(每个线程new)✅ 安全每个线程操作不同对象共享可变对象引用❌不安全所有线程操作同一对象你的直觉很准!这确实是的一个重要注意事项:它只保证引用本身的线程隔离,但不保证引用指向的对象内容的线程安全。

2025-11-15 16:44:40 224

原创 线程池做任务和传统开辟线程做任务

返回,简单但配置受限:返回,可完全配置但较复杂生产环境推荐:直接使用来获得完整的配置能力你的观察很敏锐!确实,如果使用Executors工厂方法,就无法灵活配置队列、拒绝策略等参数了。

2025-11-14 22:57:40 517

原创 关于方法内部局部变量如果使用多线程并发的限制

之前学的多线程并发,都是对类的成员变量进行修改,而类的成员变量,不管是静态还是非静态,都保存在堆上——前者储在堆上的【类的实例对象】,后者是在堆上的【类.Class对象】里(这里按java8+版本及其之后的jvm内存布局讲解,如果是jvm7即其之前,静态变量不在堆上而在方法区的实现永久代中)。但是不论这两种哪一种,不论jdk哪个版本,这个【成员变量】所有线程都能读,所有线程都能写。当然写的时候就涉及多线程同步问题了,这个之前说过要靠synchronize或者lock锁解决。

2025-11-13 15:51:16 264

原创 不同版本jdkoom种类

从JDK 1.7开始,OOM的错误信息从一个"混合信号"(PermGen space)变成了"精准信号"(Java heap space 或 Metaspace),使得内存问题的根因定位变得直接和高效。GC overhead limit exceeded 堆 GC花费了98%以上的时间,却只回收了不到2%的堆空间,是Java heap space的前兆。错误诊断 PermGen space OOM需要排查是类还是字符串的问题 职责清晰: 堆OOM → 查对象/字符串 元空间OOM → 查类加载。

2025-11-10 02:11:50 267

原创 为啥jdk8以后方法区的实现由永久代变成元空间?

极易引发OOM:因为堆空间是有限的,当应用程序动态加载大量新类(比如使用Spring、反射等框架)时,永久代很容易被塞满,从而触发OOM,尽管你的“业务对象堆”(年轻代、老年代)可能还很空。用元空间替代永久代,本质是将生命周期迥异的数据(短命对象 vs 长存元数据)进行物理隔离,让垃圾回收更有针对性,从而解决了因角色混淆导致的性能瓶颈和内存溢出问题。2. 存放的是“元数据”:它存储的类信息、方法信息等元数据,其生命周期基本与JVM进程相同,是几乎永久的。· 元空间:专心管理几乎永久的类元数据。

2025-11-10 00:16:38 127

原创 多线程情况下的jit过度优化和volatile的强制读主存及其防止指令重排

先看这个文章了解线程之间的内存关系从这里,我们知道,里面保存了主存中变量的复制值,当线程对这些复制体变量操作完后,才会重新写入主存。那聪明的你一定会想到,这,但是这里就不细说了,越说越糊涂。看下面这个代码正常来说,这个程序应该结束的,只不过结束时间有快有慢(通过观察每次程序结束时sout语句打印的counter值就能发现)。但是,反逻辑的来了,为什么?你思考——难道是前面说的,这个线程A运行时,用来判断的就算线程B运行shutdown修改了runing=false,线程A也不会更新。真的是这样么?

2025-10-24 13:43:37 904

线程的入门-此时线程调度没加锁,先后顺序随机

两种实现方式的具体代码

2025-05-05

空空如也

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

TA关注的人

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