![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
jvm
文章平均质量分 90
janyxe
资深杰迷,擅长微服务领域,云原生等领域,喜欢研究框架底层及其源码,希望通过个人博客的形式给大家带来不一样的技术分享
展开
-
并发编程-深入AQS原理
什么是AQSAQS全称为AbstractQueuedSynchronizer 是一个抽象同步队列,它提供了一个FIFO队列AQS是一个依赖状态(state)的同步器,定义了一套多线程访问共享资源的同步器框架常见的有ReentrantLock、CountDownLatchAQS使用一个Volatile的int类型的成员变量来表示同步状态,通过内置的FIFO队列来完成资源获取的排队工作,通过CAS完成对State值的修改AQS特性阻塞等待队列共享/独占公平/非公平可重入允许中断AQ原创 2022-01-25 15:03:12 · 284 阅读 · 0 评论 -
并发编程-深入解析CAS
并发专题深入解析JVM-类加载机制深入解析JVM-Java对象头组成深入JVM内置锁 synchronized 底层深入理解JMM-Java内存模型深入理解JMM-volatile原理分析CAS 无锁机制CAS: Compare and Swap,翻译成比较并交换CAS是一种无锁算法,在不使用锁的情况下实现多线程之间的变量同步CAS 是通过硬件指令,保证原子性CAS 有三个操作数:内存值V,旧的预期值E,要修改的新值N仅当预期值E和内存值V相同时,将内存值V修改为NV为内存值原创 2022-01-21 15:08:33 · 167 阅读 · 0 评论 -
深入理解JMM-volatile原理分析
并发专题深入解析JVM-类加载机制深入解析JVM-Java对象头组成深入JVM内置锁 synchronized 底层深入理解JMM-Java内存模型什么是 volatile能够保证线程可见性,当一个线程修改共享变量时,能够保证对另外一个线程可见性,不能保证原子性volatile 的特性保证可见性禁止重排序不能保证原子性volatile实现通过汇编lock前缀指令触发底层锁的机制通过lock前缀指令,会锁定变量缓存行区域并写回主内存,这个操作称为“缓存锁定”一处理器的缓存原创 2022-01-20 15:53:39 · 342 阅读 · 0 评论 -
深入理解JMM-Java内存模型
并发专题深入解析JVM-类加载机制CPU多核硬件架构剖析CPU每次从主内存读取数据比较慢,CPU通常涉及多级缓存。CPU读主内存的数据,按照空间局部性原则加载局部快照到缓存中L1 L2 属于每个CPU中都是独立的缓存,缓存主内存共享变量的数据作为副本,L3属于多个cpu之间共享的缓存。每个cpu之间都有独立二级缓存主内存的数据作为副本,而副本与副本之间是完全不可见的JMM内存模型主内存存放我们共享变量的数据工作内存每个CPU对共享变量(主内存)的副本JMM八大同步规范re原创 2022-01-19 16:37:16 · 438 阅读 · 10 评论 -
深入JVM内置锁 synchronized 底层
synchronized原理详解synchronized内置锁是一种对象锁(锁的是对象而非引用),作用粒度是对象,可以用来实现对临界资源的同步互斥访问,是可重入的synchronized底层原理synchronized是基于JVM内置锁实现,通过内部对象Monitor(监视器锁)实现,基于进入与退出Monitor对象实现方法与代码块同步,监视器锁的实现依赖底层操作系统的Mutex lock(互斥锁)实现。JVM内置锁在1.5之后版本做了重大的优化,如锁粗化(Lock Coarsening...原创 2021-10-01 14:53:51 · 254 阅读 · 0 评论 -
深入解析JVM-类加载机制
类加载器加载的过程原创 2021-08-27 15:48:12 · 465 阅读 · 0 评论 -
深入解析JVM-Java对象头组成
目录一个对象如何组成的?基本类型占用的字节和位数new 一个对象占用多少字节对象内存中offset作用对象头详解一个对象如何组成的?对象在内存中的布局包含:对象头、Mark Word 、Klass PointerMark Word:用于存储对象自身的运行时数据, 如哈希码(HashCode)、GC分代年龄、锁状态标志、线程持有的锁、偏向线程ID、偏向时间戳等。Klass Pointer:对象指向它的类的元数据的指针,虚拟机通过这个指针来确定这个对象是哪个类的实例.原创 2021-09-09 09:34:24 · 260 阅读 · 0 评论