文章预览
之前聊了JVM的内存模型,我们讲了Java虚拟机在应用运行时会自动将内存划分为方法区、堆、虚拟机栈、本地方法栈、程序技术器等区域,其中方法区和堆为线程共享,而在应用程序运行时,由于出现多线程的操作,我们会围绕并发编程中原子性、可见性、有序性抽象出一层规则,用来屏蔽硬件和操作系统之间的内存访问差异,实现在不同的平台下并发的一致性。 1 从硬件内存架构到Java内存模型 1.1 硬件内存架构 在CPU内部有一组CPU寄存器,寄存器是cpu直接访问和处理的数据,是一个临时放数据的空间。一般CPU都会从内存取数据到寄存器,然后进行处理,但由于内存的处理速度远远低于CPU,导致CPU在处理指令时往往花费很多时间在等待内存做准备工作,于是在寄存器和主内存间添加了CPU缓存,CPU缓存比较小,但访问速度比主内存快得多,
………………………………