码迷,mamicode.com
首页 > 其他好文 > 详细

字节码增强

时间:2020-01-28 21:37:45      阅读:74      评论:0      收藏:0      [点我收藏+]

标签:code   height   读取   src   团队   结构   文件   jvm   顺序   

之前看了美团技术团队推送的一篇文章,介绍了字节码增强技术,可的很好,自己也记录一下,增强一下记忆,也方便日后巩固学习,有兴趣的可以去搜索美团技术团队的原文

字节码是JVM的底层基础知识,如果能够掌握对于排查问题会有更深层次的理解

1.什么是字节码

首先我们看看什么是字节码,找到一个.class文件,看看长什么样子

技术图片

 

 Java之所以可以一次编译,到处运行,首先是因为JVM针对各种操作系统和平台都进行了定制,二是无论在什么平台,都可以通过javac命令将一个.java文件编译成固定格式的字节码(.class文件)供JVM使用

之所以被称之为字节码,是因为.class文件是由十六进制值组成的,JVM以两个十六进制值为一组,就是以字节为单位进行读取

2.字节码的结构

.java文件编译后生成的字节码文件,打开如上图,JVM对字节码是有规范要求的,要求每一个字节码文件都要有十部分按照固定的顺序组成,整体的结构和顺序如下图:

技术图片

 

 (1)魔数

所有的.class文件的前4个字节都是魔数,魔数以一个固定值:0xCAFEBABE,放在文件的开头,JVM就可以根据这个文件的开头来判断这个文件是否可能是一个.class文件,如果是这个开头,才会往后执行下面的操作

技术图片

一直困惑的java的图标为什么是一杯咖啡,看到这里就大概明白了,这个魔数的固定值是Java之父James Gosling指定的,意为CafeBabe(咖啡宝贝)

 

字节码增强

标签:code   height   读取   src   团队   结构   文件   jvm   顺序   

原文地址:https://www.cnblogs.com/wangflower/p/12238619.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!