一. JVM内存结构图(JDK1.6)
pc(程序计数器):保存当前线程正在执行的字节码的行号,线程私有;
JVM栈:栈里面存放着方法的基本数据类型和对象的引用,线程私有;
局部变量表:方法中定义的局部变量都会存放在局部变量表。
?操作数栈:操作数栈将变量之间的运算入栈,存储计算结果,再出栈赋值给局部变量表
方法出口:方法出口记录了test()方法执行完成后的一个出口,也就是回到main()。
本地方法栈:本地方法供java直接调用本地 C/C++ 库方法,线程私有;
堆:存放new出来的对象和数组,是垃圾回收区域,线程共有;
方法区:用于存储被虚拟机加载的类信息、常量和static变量,线程共有。
二. JVM内存结构图(JDK1.8)
随着JDK8的到来,JVM不再有方法区,方法区存储的信息:1、虚拟机加载的类信息,2、运行时常量池,分别被移动到了元数据区和堆中。 元数据区和方法区最大的区别在于:元数据空间不在jvm中,而是使用本地内存。
原文:https://www.cnblogs.com/shijianchuzhenzhi/p/12898610.html