前言 当我们操作字节码的时候,都是和字节码的概念打交道,这让我们很困扰,asm也想到了这点,为了方便,它提供了一个可以把java概念转化为字节码概念的类 import org.objectweb.asm.Type; Type类的功能 这里仅列举常用功能,要探索更多强力功能请参考官方文档或者源码 将类型转化为描述符 获取方法参数.返回值的描述符 获取类型的槽大小 获取方法参数和返回值槽大小 @Test void fun5() { // 返回Type对象 System.out.println(Typ…
Tips: ASM使用访问者模式,学会访问者模式再看ASM更加清晰 ClassReader 用于读取字节码,父类是Object 主要作用: 分析字节码里各部分内容,如版本.字段等等 配合其他Visitor使用 主要使用的方法 public void accept(ClassVisitor classVisitor, int parsingOptions) { this.accept(classVisitor, new Attribute[0], parsingOptions); } // 第一个…
概述 执行引擎是Java虚拟机最核心的组成部分之一.“虚拟机”是一个相对于“物理机”的概念 ,这两种机器都有代码执行能力,其区别是物理机的执行引擎是直接建立在处理器.硬件.指令集和操作系统层面上的,而虚拟机的执行引擎则是由自己实现的,因此可以自行制定指令集与执行引擎的结构体系,并且能够执行那些不被硬件直接支持的指令集格式. 在Java虚拟机规范中制定了虚拟机字节码执行引擎的概念模型,这个概念模型成为各种虚拟机执行引擎的统一外观(Facade ).在不同的虚拟机实现里面,执行引擎在执行Java代码…
 java集合框架之java HashMap代码解析 文章Java集合框架综述后,具体集合类的代码,首先以既熟悉又陌生的HashMap开始. 源自http://www.codeceo.com/article/java-hashmap-java-collection.html 签名(signature) public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Se…
目录 1.类文件结构 1.1 Class类文件结构 1.2 魔数与Class文件的版本 1.3 常量池 1.4 访问标志 1.5 类索引.父索引与接口索引集合 1.6 字段表集合 1.7 方法集合 1.8 属性表集 1.8.1 Code属性 1.8.2 Exception属性 1.8.3 LineNumberTable属性 1.8.4 LocalVariableTable属性 1.8.5 SourceFile属性 1.8.6 ConstantValue属性 1.8.7 InnerClass属性…
参考来源:http://www.cnblogs.com/fingerboy/p/5456371.html       java笔记--理解java类加载器以及ClassLoader类 参考来源:http://blog.csdn.net/shareus/article/details/52422788    Java 类加载器及加载Class字节码…
<深入理解 Java 虚拟机>学习 -- Java 内存模型 1. 区别 这里要和 JVM 内存模型区分开来: JVM 内存模型是指 JVM 内存分区 Java 内存模型(JMM)是指一种虚拟机规范 2. 目的 缓存一致性 在硬件中,为了解决处理器与内存的速度矛盾,在两者之间使用了高速缓存,但也引入了新的问题:缓存一致性. 在多处理器系统中,每个处理器都有自己的高速缓存,而它们又共享同一主内存.当多个处理器的运算任务都涉及同一块主内存区域时,将可能导致各自的缓存数据不一致的情况. 为了解决一致…
JVM学习笔记--类加载和字节码技术篇 在本系列内容中我们会对JVM做一个系统的学习,本片将会介绍JVM的类加载和字节码技术部分 我们会分为以下几部分进行介绍: 类文件结构 字节码指令 编译期处理 类加载阶段 类加载器 运行期优化 类文件结构 这一小节我们将简单介绍一下类的文件结构部分,简单阅读一下以下内容即可 整体文件展示 首先我们通过一个简单的HelloWorld文件来进行类文件结构介绍 首先我们给出Java文件代码: package cn.itcast.jvm.t5; // HelloWo…
JVM 内部原理(二)- 基本概念之字节码 介绍 版本:Java SE 7 每位使用 Java 的程序员都知道 Java 字节码在 Java 运行时(JRE - Java Runtime Environment)里运行.Java 虚拟机(JVM - Java Virtual Machine)是 Java 运行时(JRE)的重要组成部分,它可以分析和执行 Java 字节码.Java 程序员不需要知道 JVM 是如何工作的.有很多应用程序和应用程序库都已开发完成,但是它们并不需要开发者对 JVM 有…
先附一张Java集合框架图. 从上面的集合框架图可以看到,Java集合框架主要包括两种类型的容器,一种是集合(Collection),存储一个元素集合,另一种是图(Map),存储键/值对映射.Collection接口又有3种子类型,List.Set和Queue,再下面是一些抽象类,最后是具体实现类,常用的有ArrayList.LinkedList.HashSet.LinkedHashSet.HashMap.LinkedHashMap等等.(ps:带虚线边框的都是接口不能直接使用) Collect…