欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

黑马程序员JVM笔记03-类加载与字节码技术

时间:2023-06-13
类文件结构

以一段简单的java代码为例:

package cn.itcast.jvm.t5;// HelloWorld 示例public class HelloWorld { public static void main(String[] args) { System.out.println("hello world"); }}

执行 javac -parameters -d 、HellowWorld.java
编译后的Class文件(二进制):

根据JVM规范,类文件结构如下:

ClassFile { u4 magic; u2 minor_version; u2 major_version; u2 constant_pool_count; cp_info constant_pool[constant_pool_count-1]; u2 access_flags; u2 this_class; u2 super_class; u2 interfaces_count; u2 interfaces[interfaces_count]; u2 fields_count; field_info fields[fields_count]; u2 methods_count; method_info methods[methods_count]; u2 attributes_count; attribute_info attributes[attributes_count];}

1、魔数

0~3 字节,表示它是否是【class】类型的文件

2、版本号

4~7 字节,表示类的版本
00 34(52) 表示是 Java 8

3、常量池








4、访问标识与继承信息


5、Field信息


6、Method信息

表示方法数量,本类为 2

一个方法由 访问修饰符,名称,参数描述,方法属性数量,方法属性组成

分析第一个方法:



分析第二个方法:



7、附加属性

参考文献

字节码指令

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。