java内存结构和内存模型,再有人问你Java内存模型是什么就把这篇文

1,再有人问你Java内存模型是什么就把这篇文你说的应该是主存和工作内存吧 , 主存是公共空间 , 基本可以类比为虚拟机模型中的堆,对象创建好了都是在主存里,所有线程都可以访问,工作内存是线程的私有内存,只有本线程可以访问,如果线程要操作主存中的某个对象,必须从主存中拷贝到工作内存,在对工作内存中的副本进行操作,操作后再写入主存,而不能对主存的对象直接操作了解java内存模型对深入了解jvm有很多好处 。jmm通过控制主内存与每个线程的本地内存之间的交互,来为开发者提供内存可见性保证 。【java内存结构和内存模型,再有人问你Java内存模型是什么就把这篇文】
2,java内存模型有哪些JMM保证:如果程序是正确同步的,程序的执行将具有顺序一致性。JMM设计从JMM设计者的角度来说 , 在设计JMM时,需要考虑两个关键因素:(01) 程序员对内存模型的使用 。程序员希望内存模型易于理解,易于编程 。程序员希望基于一个强内存模型(程序尽可能的顺序执行)来编写代码 。(02) 编译器和处理器对内存模型的实现 。编译器和处理器希望内存模型对它们的束缚越少越好 , 这样它们就可以做尽可能多的优化(对程序重排序,做尽可能多的并发)来提高性能 。编译器和处理器希望实现一个弱内存模型 。JMM设计就需要在这两者之间作出协调 。JMM对程序采取了不同的策略:(01) 对于会改变程序执行结果的重排序,JMM要求编译器和处理器必须禁止这种重排序 。(02) 对于不会改变程序执行结果的重排序,JMM对编译器和处理器不作要求(JMM允许这种重排序) 。2 个
3,java的内存模型是怎么设计的先来画一个简图,java内存模型可以这样分类:主要作用,存放的类型:堆:主要是用于存放对象 。栈:存放一个对象引用和基本数据类型、局部变量静态变量区:存放static类型的变量或者成员变量、常量代码区:书写的代码下面看代码具体的说明:package com.wyq.Memory;public class Personpublic String name;//成员变量,存放在栈中 public static int age;//static类型的变量 , 存放在静态变量区 public static final String sex="女";//常量在常量池中 public Person(String name)this.name=name; } public void walk(Person person)int step=5;//局部变量 , 基本数据类型,存放在栈中System.out.println(person.name+"跑了"+step+"步"); } public static void main(String[] args)Person person=new Person("楼主");//由构造器new一个person对象 , 存放在堆中person.walk(person); }}//整个代码在代码区中堆 和占通过堆中的指引找到占内的东西

    推荐阅读