0
点赞
收藏
分享

微信扫一扫

详解 JVM 字节码 (1)

前言

前一段时间利用自己闲暇时间看了点 JVM 字节码的知识,那时作为 Android 应用开发人员,似乎学习字节码对于自己帮助并不大,那么我又为什么去学习字节码呢,多半是处于 java 底层知识比较好奇。这里多说一句自己之所以能够成为一个程序员,也是当年因为自己对这行业好奇才进入的,还有就是那是一个 web 应用如火如荼发展的年代。

为什么推荐学习字节码是因为可以从比源码更深的层面去学习 Java 相关知识。其实有些知识了解多了会无形中提高你的编程能力,而且当你遇到一些底层相关的问题,也可以迎刃而解。比如通过字节码的学习,可以更好地理解 Java中各种语法和语法糖背后的原理,更好地理解多态等语言特性。

基础概念

什么是 JVM

JVM(JavaVirtualMachine)的缩写,JVM 是一种用于计算设备的规范,是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。JVM底层由三个系统构成分别是:类加载、运行时数据区、执行引擎。

字节码

Java源代码经过虚拟机编译器编译后产生的文件,也就是扩展为.class的文件,不面向任何特定的处理器,只面向虚拟机。

字节码的作用

Java 字节码对于 JVM 就好像汇编语言对应计算机。那么汇编语言的语法就对应着字节码的助记符,其实计算机和 JVM 都是读取字节码(16进制或8进制字节)来执行命令。

javap 工具

通过 JDK 自带的 javap 工具我们就可以助记符形式来查看 class 文件的字节码。

字节码的可视化工具 jclasslib

这里介绍一个查看字节码的方便工具,可下载安装版本 jclasslib 来查看 class 文件,也可以在 inteliji 上安装 jclasslib 插件来查看字节码文件

在开始分析 class 字节码前,先补一补一些基础知识,帮助我们更好地了解 JVM 是如何执行字节码的,大家可能都知道 JVM 是操作栈,

基本操作


这些操作完成对栈进行操作。JVM 是一个基于栈的虚拟机。

举报

相关推荐

0 条评论