jvm运行时区域

2020-04-07  本文已影响0人  程序男保姆
image.png image

Java中的堆内存存储对象本身以及数组
Java堆空间是Java垃圾收集器管理的主要区域。

方法区中,存储了每个类的信息(包括类的名称,方法信息,字段信息)、静态变量常量以及编译器编译后的代码等。

在Class文件中除了类的字段、方法、接口等描述信息外,还有一项信息是常量池,用来存储编译期间生成的字面量和符号引用。
但是运行时也可以存放在常量池中,比如 Java String类中的intern()方法

用来存储方法中的局部变量(包括在方法中声明的非静态变量以及函数形参)。
对于基本数据类型的变量,则直接存储它的值,
对于引用类型的变量,则存储对象的引用。局部变量表的大小在编译器就可以确定其大小了,
因此在程序执行期间局部变量表的大小是不会发生改变的。

栈最典型的一个应用就是用来对表达式求值。
想想一个线程执行方法的过程中,实际上就是不断执行语句的过程,而归根到底就是进行计算的过程。因此可以这么说,
程序中的所有计算过程都是借助操作数栈来完成的。

因为在方法执行的过程中有可能需要用到类中的常量,所以必须要有一个引用指向运行时常量。

当一个方法执行完毕之后,要返回之前调用它的地方,因此栈帧中必须要保存一个方法返回地址。

上一篇 下一篇

猜你喜欢

热点阅读