jvm程序员jvm性能调优

java基础知识,JVM的运行时数据区

2020-02-17  本文已影响0人  javap

知识要点:

方法区(元空间)

对于大多数应用来说,Java堆(Heap)是Java虚拟机所管理的内存中最大的一块。堆主要用来存放对象实例。

方法区(元空间)

方法区是各个线程共享的内存区域,它用于存储已被虚拟机加载

Java栈是Java方法执行的内存模型每个方法在执行的同时都会创建一个栈帧的用于存储局部变量表、操作数栈、动态链接、方法出口等信息。每个方法从调用直至执行完成的过程就对应着一个栈帧在虚拟机中入栈和出栈的过程。
Java 6中,32位Sparc系统默认的栈内存是512k,64位系统是1024k; 32位的 X86 Solaris/linux系统默认栈内存是320k,64位 X86 Solaris/linux系统默认栈内存是1024k;Windows中默认的栈内存是从java.exe中读出来的。对Java 6来说,32位系统默认大小为320k,64位系统为1024k。
栈帧(Stack Frame)
栈帧由三部分组成:局部变量表、操作数栈以及帧数据。
栈帧的大小因局部变量表和操作数栈而异。当JVM执行一个方法时,它会检查class中的数据,以便确定一个方法执行时在局部变量表和操作数栈中所需存储的word size。然后,JVM会为当前方法创建一个size相对应的栈帧,然后把它push到栈顶。


一个栈帧需要分配多少内存,在编译的时候已经确定,不会受到程序运行期变量数据的影响,而仅仅取决于具体的虚拟机实现
局部变量表
Local Variable Table。用于保存函数的参数以及局部变量用的,局部变量表中的变量只在当前函数调用中有效,当函数调用结束后,随着函数栈帧的销毁,局部变量表也会随之销毁。局部变量表在编译期确定大小。
上一篇下一篇

猜你喜欢

热点阅读