自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 G1垃圾回收器简介

G1垃圾回收器Garbage first回收器,优先收集垃圾多的区域。之前的垃圾回收器使用的过程中,都是将整个年轻代(survivor区和eden区)进行回收和整个老年代进行回收,G1希望在可配置的限定时间(STW时间)内完成垃圾回收,那么就只能减少回需要回收的区域(region),减少回收的区域可能就需要增大触发YGC的频率。这会降低JVM的吞吐量。G1一般使用在堆内存空间较大的情况下。G1垃圾回收器有两种垃圾回收模式Fully Young GCMixed GC跨代对象引用其实本质

2020-10-27 16:46:20 709

原创 ConcurrentHashMap 1.7与1.8 源码解析

本文参考JavaGuide-Link ConcurrentHashMapConcurrentHashMap 1.71、存储结构Segment数组是没有办法扩容的,其默认值为16,也代表并发量默认为16。2、初始化默认初始化容量、默认初始化负载因子、默认并发级别。详解构造参数:@SuppressWarnings("unchecked")public ConcurrentHashMap(int initialCapacity,float loadFactor, int concurrencyLe

2020-10-18 22:36:05 133 1

原创 缓存行对齐以及MESI协议

引言​这篇博客是来填上一篇博客写下的坑,来解释一下这个图有关的两个问题,其一是缓存行同步问题,其二是MESI协议。CPU缓存结构​ 先说CPU的缓存结构,在计算机组成中CPU的结构一个核心中关注这三个部分:ALU只负责计算,PC记录程序当前运行到哪一行了,Register计数器记录当前变量的值,在CPU的视野中是没有什么多线程问题的,他只在乎PC、寄存器中的值是什么拿到指令,到寄存器中计算数据然后再存回寄存器中就可以了。​ 那么在CPU设计的时候就想着尽可能的压榨ALU的计算性能,让他不停的计算,

2020-10-09 16:53:56 321 2

原创 volatile与CPU Lock指令前缀

volatile保证线程之间的可见性和指令重排序稳定​ volatile主要就是保证线程之间对单一变量的有序性和防止指令的重排序,本篇博文在于深入到操作系统的角度来解释什么是volatile关键字以及其如何实现对一个变量的代码有序性。引入引入1 单例模式下的volatile 要保证指令执行有序​ 首先先看一段volatile关键字经常被面试中问到的单例模式的代码/** * @author XX * @date 2020/10/9 - 9:20 */public class Singleto

2020-10-09 11:04:27 1686 3

原创 Netty底层有关ReferenceCount的CAS操作和自旋锁

Netty底层有关ReferenceCount的CAS操作和自旋锁在Netty中为了提供对ByteBuf的回收则引入了ReferenceCount的概念为了方便回收空间,带有refCnt的ByteBuf如果其ReferenceCount的值为0那么我们就无法再使用该对象,因为Netty在底层中默认值为0后将被GC回收。进入下面的代码是public abstract class Abstract...

2020-03-15 11:20:55 206

空空如也

空空如也

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

TA关注的人

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