Java-JVM的内存模型
一.JVM内存模型
JVM内存模型可以从进程生命周期和线程生命周期
1.线程生命周期
每个线程都会有自己各自一份数据,不会存在线程安全问题
1.程序计数器
指示当前线程执行的字节码指令的行号,以便线程执行时可以回到正确的位置
2.虚拟机栈
线程私有的,与线程在同一时间创建。管理JAVA方法执行的内存模型。每个方法执行时都会创建一 个桢栈来存储方法的的变量表、操作数栈、动态链接方法、返回值、返回地址等信息。方法执行完毕后,将其出栈。
3.本地方法栈
与虚拟机栈类似,但是执行的是本地的方法(不是java语言编写的)
2.进程生命周期
进程里的数据会被当前所有的线程共享,会存在线程安全问题
1.堆
存放对象实例和数组,是垃圾回收的主要区域,分为新生代和老年代。
新生的对象放入Eden区中,经GC后放入S0或S1,再经GC后放入之前未放入的S1或S0(总保持一个为空),直至达到老年代的临界值,放入老年代

2.方法区
线程共享的,用于存放被虚拟机加载的类的元数据信息,如常量、静态变量和即时编译器编译后的
代码。