栈区域——每一个线程创建一个单独的运行时堆栈。 对于每一个方法调用一个称为栈内存栈帧被创建所有局部变量将被创建在栈内存中。栈区域是线程安全的因为它不是一个共享资源栈帧分三个实体:
成都创新互联专业为企业提供
广陵网站建设、广陵做网站、广陵网站设计、广陵网站制作等企业网站建设、网页设计与制作、广陵企业网站模板建站服务,10多年
广陵做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。
其一、局部变量数组——有多少相关的方法局部变量以及相应的值将被存储在这里。
其二、操作数栈——如果任何中间操作要求执行,操作数栈作为运行时工作区执行操作。
其三、帧数据——所有的符号对应的方法存储在这里。在任何的情况下异常catch块信息将保存在帧数据。
程序计数器——每个线程必须分开程序计数器登记当前执行的指令一旦执行程序计数器(程序计数登记器)更新下一个指令。
本地方法栈——本地方法栈保存本机方法的信息。为每一个线程将创建一个单独的本地方法栈以备不时之用。
执行引擎
通过类装载器装载的被分配到JVM的运行时数据区的字节码会被执行引擎执行。以指令为单位执行引擎读取Java字节码它就像一个CPU一样一条一条地执行机器指令。每一个字节码指令都由一个1字节的操作码和附加的操作数组成执行引擎取得一个操作码,继续根据操作数来执行任务完成后就继续执行下一条操作码。
Java字节码是用一种人类可以读懂的语言编写的而不是用机器可以直接执行的语言。因此执行引擎必须把字节码转换成可以直接被JVM执行的语言字节码可以通过以下两种方式转换成合适的语言。
文章名称:浅析JAVA程序运行模式及虚拟机JVM(四)
本文来源:
http://cqcxhl.com/article/cphods.html