方法表

1、methods_count

 method_info,前三个字段和field_info一样

2、方法的属性结构

方法中的每个属性都是一个attribut_info结构

JVM定义了部分attribute,但是编译器自己也可以实现自己的attribute写入class文件里,供运行时使用。

不同的attribute通过attribute_name_index来区分。

JVM规范预定义的attribut

3、Code结构

Code attribute 的作用是保存该方法的结构,如所对应的字节码

attribute_length表示attribute所包含的字节数,不包含attribute_name_index和attribute_length字段

max_stack表示这个方法运行的任何时刻所能到达的操作数栈的最大深度。

max_locals 表示方法执行期间创建的局部变量的数目,包含用来表示传入的参数的局部变量。

code_length表示该方法所包含的字节码的字节数以及具体的指令吗

具体字节码即时该方法被调用时,虚拟机执行的字节码

exception_table,这里存放的是处理异常的信息

每个exception_table表项由start_pc, end_pc, handler_pc, catch_type组成

start_pc 和end_pc表示在code数组中的从start_pc到end_pc处(包含start_pc,不包含end_pc)的指令抛出的异常会由这个表项来处理。

handler_pc表示处理异常的代码的开始处。

catch_type表示会被处理的异常类型,它指向常量池里的一个异常类。当catch_type为0时,表示处理所有的异常

附加属性

LineNumberTable: 这个属性用来表示code数组中的字节码和Java代码行数之间的关系。这个属性可以用来在调试的时候定位代码执行的行数。

LineNumberTable的结构

字节码查看工具

jclasslib

https://github.com/ingokegel/jclasslib

Idea上安装jclasslib插件

插件安装好后,view里会多出两项

最新文章

  1. css的padding
  2. 统计和分析系统性能【IO CPU 内存】的工具集合
  3. [Android Pro] Fragment中使用SurfaceView切换时闪一下黑屏的解决办法
  4. Bulk Insert的用法 .
  5. 几款国产开源的Windows界面库
  6. ORA-01078, LRM-00123错误处理
  7. Why Does Everyone Else Appear to Be Succeeding?
  8. cookieless domain
  9. HDU 1171 Big Event in HDU (多重背包)
  10. 【京东详情页】——原生js爬坑之放大镜
  11. 组合 Lucas定理
  12. 网络基础Cisco路由交换三
  13. Linux Swap交换分区探讨
  14. android踩坑日记1
  15. ScrollView嵌套ListView、GridView,进入页面显示的位置并不是在最顶部,而是在中间部分问题
  16. 清除微信小程序的缓存
  17. Android中的Sqlite中的onCreate方法和onUpgrade方法的执行时机
  18. Java IO流学习总结六:ByteArrayInputStream、ByteArrayOutputStream
  19. HTML+CSS基础课程
  20. Objective-C 入门笔记

热门文章

  1. DELL R730 做raid10
  2. centos6/7添加系统服务
  3. 简单介绍 Java 中的注解 (Annotation)
  4. 个性化排序算法实践(四)——GBDT+LR
  5. Spring-05 -AOP [面向切面编程] -Schema-based 实现aop的步骤
  6. 评估预测函数(1)---算法不能达到我们的目的时,Deciding what to try next
  7. c++中如何使用memset()
  8. 【贪心】Allowance POJ 3040
  9. Tensorflow细节-P196-输入数据处理框架
  10. Spring asm