之前总说内存结构分为什么堆,栈,方法区什么的,一直没太取细究,最近回顾发现了之前没主义的一些东西,言归正传,先来介绍下什么标题所说的一些区别,
首先
JVM体系结构
咱们日常所说的堆,栈,方法区就是这个层次的概念,存在于jvm结构体系当中,
再说java内存模型:
Java内存模型
Java虚拟机规范中试图定义一种Java内存模型来屏蔽掉各种硬件和操作系统的内存访问差异,以实现让Java程序在各种平台上都能达到一致的内存访问效果。
主内存与工作内存
Java内存模型的主要目标:.,`定义程序中各个变量的访问规则,即在虚拟机中将变量存储到内存和从内存中取出变量这样的底层细节。注意,此处的变量与Java编程语言中所说的变量有所区别,它包括实例字段、静态字段和构成数组对象的元素,但不包括局部变量与方法参数,因为后者是线程私有的,不会被共享,自然就不会存在竞争问题。
为了获取较好的执行效能,Java内存模型并没有限制执行引擎使用处理器的特定寄存器或缓存来和主内存进行交互,也没有限制即时编译器进行调整代码执行顺序这类优化操作。
Java内存模型规定了所有的变量都存储在主内存中,此处的主内存仅仅是虚拟机内存的一部分,而虚拟机内存也仅仅是计算机物理内存的一部分(为虚拟机进程分配的那一部分)。
每条线程还有自己的