![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java虚拟机学习
文章平均质量分 69
java虚拟机学习
啊川啦丶
这个作者很懒,什么都没留下…
展开
-
JVM synchronized关键字相关原理分析
众所周知啊,谈到synchronized 关键字就避免不了 谈到这个锁升级 谈到这个锁升级,就避免不了 谈到什么 偏向锁啊,轻量级锁啊,自旋锁啊,重量级锁啊 最近在复习,也看了一些网上别人写的,发现和自己学习的有些出入。 网上一些文章主要有以下两个观点和我不同 1、偏向锁在已经偏向一个A线程之后,如果A线程已经没有在这个synchronized 代码段了或者A线程已经消亡了,此时B线程再去获得这个锁是先置为无锁状态然后再尝试偏向锁加锁 2、轻量级锁会自旋来尝试获得锁自旋失败则升级为重量级锁 这上面两个观点我原创 2021-08-24 20:08:03 · 153 阅读 · 0 评论 -
Java内存模型可见性解决方案以及原理分析
上篇我们提到java内存模型可见性的问题,这篇我们就来讲讲 如何解决这个问题,以及他的原理分析。先把解决方案原创 2021-08-13 11:32:59 · 227 阅读 · 0 评论 -
Java内存模型
在介绍java内存模型之前先说 为什么java需要自己定义一个内存模型,众所周知,java是一个跨平台语言,不是有句话说:一次编译,到处报错,,不对,是到处运行,那么不同平台的的内存模型是会影响代码的运行的,会造成一些很奇怪的错误,于是说,定义一个内存模型来屏蔽不同平台的内存模型的差异是非常重要的。使得开发者只用遵循java内存模型来开发。 java内存模型规定了 所有的变量都存储在主内存,每个线程有自己的工作内存,线程对变量的赋值和读取都需要在工作内存中进行,然后在同步回主内存,线程不能直接操作主内存的数原创 2021-08-12 18:34:13 · 83 阅读 · 0 评论 -
java虚拟机运行时数据区域概述
好久没发博客了,干脆把前段时间学习的java虚拟机的学习成果发一下 java虚拟机运行时数据区主要分为五个部分: 方法区、虚拟机栈、本地方法栈、堆内存、程序计数器,大致模型如下图: 如图,黄色代表的是线程共享的区域,蓝色是线程隔离的区域,下面我们依次来解释每个区域大致的作用 程序计数器: 通过计数器的变化来选取下一条需要执行的字节码指令,因为每个线程执行到的字节码指令是不一样的,所以每个线程都有自己的独立的程序计数器,每个线程的计数器互不影响,独立存储,所以他是线程隔离的区域,如果执行的是一个j.原创 2021-04-20 22:35:20 · 103 阅读 · 0 评论