JVM的组成

JVM的组成大体由类装载子系统、字节码执行引擎和运行时数据区三大部分组成,如图:

 我们先看看运行时数据区,它又由堆(Heap)、虚拟机栈(JVM Stack)、本地方法栈、方法区(Method Area)、程序计数器组成。

        虚拟机栈又可以称之为线程栈,每个方法都存放在虚拟机栈的栈帧中,比如:main方法就是一个栈帧。每个栈帧都会有局部变量、操作数栈、动态链接和方法出口,我们可以通过javap -c XX.class进行反编译,看到每个字节码文件的含义,局部变量是int a=1中的a,而操作数栈则是int a=1中的1。iconst_1先将int类型常量1压入操作数栈,istore_1再将int类型值出栈存入到局部变量1。iload_1将局部变量1中装载在int类型值中,也就是放进操作数栈中进行后面的运算操作。

        程序计数器是记录正在运行或者马上要运行的那行代码的行号或者位置。


版权声明:本文为he1810368646原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。