虚拟机栈和方法区的区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了虚拟机栈和方法区的区别相关的知识,希望对你有一定的参考价值。

虚拟机栈

虚拟机栈是线程私有的。

虚拟机栈描述的是Java方法执行的内存模型,每个方法在执行的同时都会创建一个栈帧(Stack Frame)用于存储局部变量表、操作数栈、动态连接、方法出口等信息。每一个方法从调用直至执行完成的过程,就对应着一个栈帧在虚拟机中入栈到出栈的过程。

局部变量表存放了编译期可知的各种基本数据类型(boolean、byte、char、short、int、float、long、double)、对象引用(reference类型、它不同于对象本身,可能是一个指向对象起始地址的引用指针,也可能是指向一个代表对象的句柄或其他与此对象相关的位置) 和returnAddress类型(指向了一条字节码指令的地址)。

方法区

方法区是各个线程共享的内存区域。

它用于存储已被虚拟机加载的的类信息、常量、静态变量、即时编译器编译后的代码等数据。

 

以上是关于虚拟机栈和方法区的区别的主要内容,如果未能解决你的问题,请参考以下文章

Java虚拟机栈和本地方法栈

Java虚拟机栈和内存模型

第二章:Java虚拟机栈和本地方法栈溢出

java中堆和栈的区别

JVM05_虚拟机栈

细说虚拟机栈