JVM结构与Java内存模型

待完善

一、JVM结构:

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 线程修改共享数据,把数据复制到工作空间,然后再进行修改,修改完成以后刷新内存中的数据。

猜你喜欢

转载自blog.csdn.net/qushaming/article/details/83420675