待完善
一、JVM结构:
1、方法区(信息共享):类信息、常量、Static变量、JIT编译的代码 反射正是在方法区加载的
2、堆(信息共享):实例对象 (会内存溢出OOM)
3、VM stack:Java方法在运行的内存模型(结构)——栈帧,每一个方法都有一个对应的栈帧。其内部存放方法的私有数据。包括局部变量、引用类型数据的地址、操作数栈。以上数据只有该方法能够访问。(会内存溢出(OOM))
4、native method stack(本地方法栈):存放线程的私有数据 JVM native
5、PC(程序计数器):Java线程的私有数据,这个数据就是执行一下条指令的地址。
类由类加载器ClassLoader加载
二、Java内存模型 Java Memory Model JMM(规范,抽象的模型)
1.主内存:共享的信息
2.工作内存:私有信息、基本数据类型,直接分配到工作内存,引用的地址存放工作内存。引用的对象存放在堆里
3.工作方式
A 线程修改私有数据,直接在工作空间修改
B 线程修改共享数据,把数据复制到工作空间,然后再进行修改,修改完成以后刷新内存中的数据。