自定义博客皮肤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)
  • 收藏
  • 关注

原创 java并发编程之volatile原理

java volatile内存语义java的volatile关键字比锁要轻量级,volatile保证了内存可见性。java语言规范中对volatile的要求是:一个线程对volatile变量的写,其他线程必须马上能看到,也就是说,对volatile变量的读能读到最新值。java是一门跨平台的语言,而各种处理器都提供了不同的内存模型,所以java提供了JMM屏蔽各种处理器内存模型的差异,让程序员在...

2019-04-17 17:21:52 180

原创 java并发编程之CPU缓存一致性和内存屏障

volatile内存语义在之前的文章 java并发编程之内存模型 中有对volatile的内存语义进行分析,这里简单的复习一下。volatile的内存语义如下:对volatile变量的写,对其他线程是可见的,其他线程立马就能读到写入的值。volatile变量的读写是具有原子性的。volatile的内存语义是如何得到保证的简单的来说,实现volatile是通过内存屏障(memory b...

2019-04-12 04:07:17 1492 2

原创 openjdk hotspot源码分析之string.intern方法原理

java实现引用的方式java实现引用有直接指针和句柄池2种方式,下面简单说下2种方式的区别和优缺点:1.直接指针的实现方式是把obj的内存地址或者相对偏移量直接赋值给Java变量,其优点是直接定位,访问快,但是缺点也很明显,Java是一门gc语言,当发生gc时,需要移动obj的偏移量,那么,对应的指针也需要发生移动,但是,由于直接指针实现的引用,指针是在Java的变量里的,移动是非常困难的...

2019-04-08 15:40:53 501

原创 jvm之jvm运行时数据区

由上图可知,jvm运行时数据区由堆、虚拟机栈(方法栈),本地方法栈,程序计数器,方法区(1.8之前由永久带实现,1.8之后由元空间来实现)5部分组成,其中,堆和方法区是所有线程共享的数据区,而虚拟机栈,本地方法栈,程序技术器是线程私有的数据区域Java堆堆是Java虚拟机管理的内存中最大的一块,Java堆是所有线程共享的内存区域,Java堆在Java虚拟机启动时创建。Java堆用来存放对象实...

2019-02-16 02:21:13 144

原创 Java并发编程之Java内存模型(JMM)

什么是Java内存模型什么是Java内存模型(Java Memory Model,JMM)呢?Java内存模型是Java虚拟机规范定义的一种模型,操作系统不是有自己的内存模型吗,为什么Java虚拟机规范还要在操作系统之上再封装一个Java内存模型呢?是这样的,每个操作系统的内存模型都存在一定的差异,像c/c++这类语言就是直接使用操作系统的内存模型,那么就会存在同一套代码,在这个平台运行是没有问...

2019-02-15 15:12:01 282

空空如也

空空如也

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

TA关注的人

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