DeathWhispers

JVM中的三色标记法

JVM中的三色标记法 三色标记法是一种垃圾回收法,它可以让JVM不发生或仅短时间发生STW, 从而达到清除JVM内存垃圾的目的. JVM中的CMS, G1垃圾回收器所使用的垃圾回收算法即为三色标记法. 算法思想 三色标记法将对象的颜色分为了黑, 灰, 白 三种颜色 白色: 该对象没有被标记过(垃圾对象) 灰色: 该对象已经被标记过了, 但该对象下的属性没有全被标记完. (GC需要从...

GC Root如何确定一个对象是不是垃圾

GC Root如何确定一个对象是不是垃圾 有两种定位垃圾的方式 引用计数 这种方式是给堆内存当中的每个对象记录一个引用个数。引用个数为0的就认为是垃圾。这时早期JDK中使用的方式。引用计数无法解决循环引用的问题。 循环引用 有A、B两个对象,它们之间互相引用,但除此之外,外部并无其他引用,因此GC时不会清理这俩个对象,因此会产生内存泄露 根可达算法 这种方式是在内存中,从引用根...

死磕Java并发:J.U.C之读写锁:ReentrantReadWriteLock

https://www.iocoder.cn/JUC/sike/ReentrantReadWriteLock/ 1. 简介 重入锁 ReentrantLock 是排他锁,排他锁在同一时刻仅有一个线程可以进行访问,但是在大多数场景下,大部分时间都是提供读服务,而写服务占有的时间较少。然而,读服务不存在数据竞争问题,如果一个线程在读时禁止其他线程读势必会导致性能降低。所以就提供了读写锁。 ...