01__JVM(1)

2019-05-25  本文已影响0人  忞触动心灵

什么是JVM:(jvm有跨平台性)

java代码-->(翻译)class(字节码文件)-->机器上运行

JVM 代码--->==类加载器--->运行是数据区(内存)--->执行引擎==--->机器识别码

内存管理是JVM的"五章六腑" : 包含-> 内存管理和垃圾回收

image

运行时数据区

线程私有(指令):程序计数器 , 本地方法栈 , 虚拟机栈(java栈)

线程共享(数据): 堆(对象) , 方法区(静态变量和常量)

image

程序计数器

指向当前线程正在执行的字节码(class)指令的地址(行号)

为什么需要程序计数器(每一个线程都有一个程序计数器,栈(虚拟机栈,本地方法栈))

(STack): 数据结构--->java方法的执行是吻合的

入口和出口只有一个

入栈

出栈

特点:

先进后出(FILO)

为什么jvm要使用栈:

虚拟机栈:(大小可以用 -Xss128k 设置)

==java的class文件进行反编译(javap -v .\javaStack.class > a.txt)的文件==
(javap指令 -v 执行 .\javaStack.class所执行的文件地址)

Java字节码指令大全

存储当前线程运行方法所需的数据, 指令. 返回地址

虚拟机栈有: ==栈帧== (类中每一个方法对应一个栈帧)

------主要有------

局部变量表(是32位的地址(2^32寻址范围):八大基本数据类型(64位,高低位进行))
(如果是对象)对象的引用的地址

反编译文件里对应的局部变量表 image

操作数栈

image

动态链接(多态)

image

返回地址

image image

虚拟机栈图解:

image
上一篇 下一篇

猜你喜欢

热点阅读