首页
学习
活动
专区
工具
TVP
发布

一只程序原

有人问我,我就会讲。
专栏作者
173
文章
120325
阅读量
29
订阅数
死磕juc(五)volatile与Java内存模型
内存屏障(也称内存栅栏,内存栅障,屏障指令等,是一类同步屏障指令,是CPU或编译器在对内存随机访问的操作中的一个同步点,使得此点之前的所有读写操作都执行后才可以开始执行此点之后的操作),避免代码重排序。内存屏障其实就是一种JVM指令,Java内存模型的重排规则会要求Java编译器在生成JVM指令时插入特定的内存屏障指令,通过这些内存屏障指令,volatile实现了Java内存模型中的可见性和有序性,但volatile无法保证原子性。
yuanshuai
2022-09-26
2200
JVM内存与垃圾回收篇第3章运行时数据区概述及线程
当我们通过前面的:类的加载 --> 验证 --> 准备 --> 解析 --> 初始化,这几个阶段完成后,就会用到执行引擎对我们的类进行使用,同时执行引擎将会使用到我们运行时数据区
yuanshuai
2022-08-22
2170
JVM内存与垃圾回收篇第4章程序计数器
https://docs.oracle.com/javase/specs/jvms/se8/html/index.html
yuanshuai
2022-08-22
1740
JVM内存与垃圾回收篇第5章虚拟机栈
https://docs.oracle.com/javase/specs/jvms/se8/html/index.html
yuanshuai
2022-08-22
3850
JVM内存与垃圾回收篇第6章本地方法接口
Java使用起来非常方便,然而有些层次的任务用Java实现起来不容易,或者我们对程序的效率很在意时,问题就来了。
yuanshuai
2022-08-22
1260
JVM内存与垃圾回收篇第7章本地方法栈
第 7 章 本地方法栈 1、本地方法栈 本地方法栈的特点 Java虚拟机栈于管理Java方法的调用,而本地方法栈用于管理本地方法的调用。 本地方法栈,也是线程私有的。 允许被实现成固定或者是可动态扩展的内存大小(在内存溢出方面和虚拟机栈相同) 如果线程请求分配的栈容量超过本地方法栈允许的最大容量,Java虚拟机将会抛出一个stackoverflowError 异常。 如果本地方法栈可以动态扩展,并且在尝试扩展的时候无法申请到足够的内存,或者在创建新的线程时没有足够的内存去创建对应的本地方法栈,那么J
yuanshuai
2022-08-22
1520
JVM内存与垃圾回收篇第8章堆
为新对象分配内存是一件非常严谨和复杂的任务,JVM的设计者们不仅需要考虑内存如何分配、在哪里分配等问题,并且由于内存分配算法与内存回收算法密切相关,所以还需要考虑GC执行完内存回收后是否会在内存空间中产生内存碎片。
yuanshuai
2022-08-22
4020
JVM内存与垃圾回收篇第1章JVM和Java体系架构
英文文档规范:https://docs.oracle.com/javase/specs/index.html
yuanshuai
2022-08-22
2580
JVM内存与垃圾回收篇第2章类加载子系统
在Java的日常应用程序开发中,类的加载几乎是由上述3种类加载器相互配合执行的,在必要时,我们还可以自定义类加载器,来定制类的加载方式。那为什么还需要自定义类加载器?
yuanshuai
2022-08-22
2180
JVM内存与垃圾回收篇第17章垃圾回收器
有了虚拟机,就一定需要收集垃圾的机制,这就是Garbage Collection,对应的产品我们称为Garbage Collector。
yuanshuai
2022-08-17
3690
JVM内存与垃圾回收篇第16章垃圾回收相关概念
右边的图:后期有一些对象不用了,按道理应该断开引用,但是存在一些链没有断开,从而导致没有办法被回收。
yuanshuai
2022-08-17
2350
JVM内存与垃圾回收篇第14章垃圾回收概述
https://docs.oracle.com/javase/8/docs/technotes/guides/vm/gctuning/toc.html
yuanshuai
2022-08-17
2030
JVM内存与垃圾回收篇第12章执行引擎
大部分的程序代码转换成物理机的目标代码或虚拟机能执行的指令集之前,都需要经过下图中的各个步骤:
yuanshuai
2022-08-17
3310
JVM内存与垃圾回收篇第11章直接内存
第 11 章 直接内存 1、直接内存概述 直接内存 不是虚拟机运行时数据区的一部分,也不是《Java虚拟机规范》中定义的内存区域。 直接内存是在Java堆外的、直接向系统申请的内存区间。 来源于NIO,通过存在堆中的DirectByteBuffer操作Native内存 通常,访问直接内存的速度会优于Java堆。即读写性能高。 因此出于性能考虑,读写频繁的场合可能会考虑使用直接内存。 Java的NIO库允许Java程序使用直接内存,用于数据缓冲区 代码示例 代码 /** * IO
yuanshuai
2022-08-17
4290
JVM内存与垃圾回收篇第9章方法区
ThreadLocal:如何保证多个线程在并发环境下的安全性?典型应用就是数据库连接管理,以及独立会话管理
yuanshuai
2022-08-17
3500
没有更多了
社区活动
腾讯技术创作狂欢月
“码”上创作 21 天,分 10000 元奖品池!
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档