Java字节码

2020-10-14  本文已影响0人  Drew_MyINTYRE

Java字节码

编辑.java文件,生成字节码文件

javac TestCode.java

反编译字节码文件

javap -verbose TestCode.class

源代码中的各种变量,关键字和运算符号的语义最终都会编译成多条字节码命令。

640.png

关于字节码的类型对应如下:

641.png
对于数组类型,每一位使用一个前置的"["字符来描述,如定义一个java.lang.String[][]类型的维数组,将被记录为"[[Ljava/lang/String;"
642.jpg

虚拟机的主要任务是装载class文件(ClassLoader完成)并执行其中的字节码,在一个Java虚拟机中有可能存在多个类加载器。

当JAVA虚拟机运行一个程序时,相关信息被组织到“运行时数据区”。

方法区用来存储解析被加载的class文件的相关信息。

当程序运行时,虚拟机会把所有该程序在运行时创建的对象都放到堆中。

PC寄存器主要用来存储线程。当新创建一个线程时,该线程都将得到一个自己的PC寄存器(程序计数器)以及一个java栈。

Java栈是由许多栈帧组成的,一个栈帧包含一个Java方法调用的状态,当线程调用一个方法时,虚拟机压入一个新的栈帧到该线程的Java栈中,当该方法返回时,这个栈帧从Java栈中弹出。

上一篇下一篇

猜你喜欢

热点阅读