![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
jvm
文章平均质量分 75
weixin_44547668
这个作者很懒,什么都没留下…
展开
-
聊聊volatile作用,原理
编译后,对比有volatile关键字和没有volatile关键字时所生成的汇编代码,发现有volatile关键字修饰时,会多出一个lock addl $0x0,(%esp),即多出一个lock前缀指令,lock指令相当于一个内存屏障。线程的工作内存保存了被该线程使用的变量的主内存副本,线程对变量的所有操作都必须在工作内存中进行,而不能直接操作主内存。内存屏障保证前面的指令先执行,所以这就保证了禁止了指令重排啦,同时内存屏障保证缓存写入内存和其他处理器缓存失效,这也就保证了可见性。原创 2022-08-23 08:49:36 · 241 阅读 · 0 评论 -
垃圾回收器与内存分配策略
想要了解GC首先要思考GC需要完成的三件事情1.哪些内存需要要回收2.什么时候回收3.如何回收?原创 2022-08-18 15:23:26 · 242 阅读 · 0 评论 -
对象创建(一)
即把一块确定大小的内存从java堆中划分出来,假设java中内存是绝对规整的,所有用过的内存放在一边,没有使用的内存放另一边,中间放指针作为分界点指示器,分配内存时仅仅把指针像空闲空间一冻与对象大小相同的距离,这种分配方式称为**(指针碰撞)Bump the Pointer**(GC回收的),如果java堆内存并不是规整的,已使用的内存和未使用的内存相互交错。...原创 2022-08-18 14:24:17 · 206 阅读 · 0 评论