CMS和G1改用三色标记法,可达性分析到底做错了什么?
我们都知道, 当JVM判断对象不再存活的时候,便会在下一次GC时候将该对象回收掉,为堆腾出空间,而JVM判断对象存活的算法大家比较熟知的有两种,分别是引用计数法和可达性分析算法 引用计数法:给对象中添加一个引用计数器,每当有一个地方引用它,...
我们都知道, 当JVM判断对象不再存活的时候,便会在下一次GC时候将该对象回收掉,为堆腾出空间,而JVM判断对象存活的算法大家比较熟知的有两种,分别是引用计数法和可达性分析算法 引用计数法:给对象中添加一个引用计数器,每当有一个地方引用它,...
CAS大家都知道,这是一项乐观锁技术,是Compare And Swap的简称,顾名思义就是先比较再替换。 虽然他叫乐观锁,但是我们都知道它是不需要加锁的,在JDK1.5 中的JUC就是建立在CAS之上的。相对于synchronized这种...
关于原子性,很多人在多个地方都听说过,大家也都背的很熟悉。 在事务的ACID中,有原子性的概念,在并发编程的原子性、可见性、有序性中也有原子性的概念。 有人认为他们是一样的,甚至很多人在说原子性的时候也都是这么说的: 原子性是指事务是一个不...
最近,JDK 19发布了,推出了几个新的特性,其中有一个比较值得关注的那就是新增了虚拟线程。 很多人可能比较疑惑,到底什么是虚拟线程,和我们现在使用的平台线程有啥区别呢? 要说清楚JDK 19中的虚拟线程,我们要先来了解一下线程都是怎么实现...
对象加锁的入口在ObjectSynchronizer::enter(h_obj, lock, current); 这个方法中(https://github.com/openjdk/jdk/blob/9583e3657e43cc1c6f210...
不知道大家有没有遇到过类似的问题,应用在刚刚启动之后,前几次访问都会比较卡顿,RT都会比极高,在运行一段时间之后,就会顺畅很多了。 这背后的原因是什么呢? 今天给大家介绍一种可能的原因,也是一种经常被别人忽略的原因,也是我们线上环境遇到过很...
最近,有很多人再传说 SpringBoot要出3.0的版本了,并且宣布不再支持 Java 8,最低要求是 Java 17了。 其实,早在2021年9月份,关于 Spring Framework 6.0的消息出来的时候,Spring 官方就已...
在日常开发中,我们会经常要在类中定义布尔类型的变量,比如在给外部系统提供一个RPC接口的时候,我们一般会定义一个字段表示本次请求是否成功的。 关于这个”本次请求是否成功”的字段的定义,我见过很多不同的开发者,定义的方式都不同,尤其是在属性的...
前段时间 Log4j接连爆漏洞的事儿相比把大家都折腾的不轻,很多开发都被连夜叫起来修复漏洞。这几天终于平复一些了。 可是,昨晚,忽然看到技术群和朋友圈,有人开始聊Logback 又爆漏洞了。 这是什么情况?难道又是远程代码调用这种重量级 b...
这几乎是每个人都知道的。 在Java中,想要获得有个数字的绝对值,可以使用java.lang.Math中的abs方法,这个类共有4个重载的abs方法,分别是: public static int abs(int a) { return (a...