一、程序源代码
二、程序在jvm中的执行过程。
三、jvm指令码
三、栈
每个线程都会从占内存中获取一块内存空间,例如:线程main就是从栈内存中获取的一小块内存空间。
栈是由一块一块的栈帧组成,里面的栈帧有“最先进,最后出”的规则,就像枪的子弹夹一样。
1、栈帧
每个线程中可能涉及打不同方法的相互调用,每个方法都会分配一块内存区域就是栈帧,栈(也就是一个线程)是由一块块栈帧组成。
栈帧内部最核心的是由四块组成:局部变量表、操作数栈、动态链接、方法出口。
(1)操作数栈:临时的一块内存区域,用来程序运行中临时存放操作数。
例、当代码执行 int a = 1 时,jvm指令 iconst_1 将int类型常量1压入操作数栈