• class字节码结构(三)(字段集合的结构)

    时间:2023-01-22 09:18:50

    《Java虚拟机原理图解》1.4 class文件中的字段表集合--field字段在class文件中是怎样组织的字段区:包括了字段计数器和字段数据区:字段是指在类中定义的静态或者非静态的全局变量,而不是在类中的方法内定义的局部变量。Field字段应该包含的信息:field字段的访问标志(access_...

  • JVM Class字节码之三-使用BCEL改变类属性

    时间:2023-01-22 09:18:44

    使用BCEL动态改变Class内容之前对Class文件中的常量池,Method的字节码指令进行了说明。JVM Class详解之一JVM Class详解之二 Method字节码指令现在我们开始实际动手,使用BCEL改变字节码指令,对Class文件进行功能扩充。先介绍下BCEL全程Apache Byte...

  • JVM-5.字节码执行引擎

    时间:2023-01-20 15:16:42

    一、概述二、栈帧结构三、方法调用四、方法执行   一、概述虚拟机与物理机虚拟机是一个相对于物理机的概念,这两种机器都有代码执行能力,其区别是物理机的执行引擎是直接建立在处理器、硬件、指令集和操作系统层面上的,而虚拟机的执行引擎则是由自己实现的,因此可以自行制定指令集与执行引擎的结构体系,并且能够执行...

  • Spring(九)CGLIB字节码增强

    时间:2023-01-13 15:22:09

    上篇文章说明了jdk动态代理。 在这里说一下cglib动态代理 说明 jdk动态代理和cglib动态代理的区别在于: cglib没有接口(通过继承父类) 只有实现类。 采用字节码增强框架cglib,在运行时 创建目标的子类 ,从而对目标类进行增强。 下面通过一个案例来说明CG...

  • spring中CGLIB代理(CGLIB字节码)

    时间:2023-01-13 15:21:57

    spring对AOP的支持-----知识点: JDK的动态代理:主要是针对实现了接口的类生成代理  CGLIB:是针对类生成代理,针对指定的类生成一个子类,覆盖里面的方法,所以指定的类不能是final包括方法 实例:目标对象 Java代码   package com.lovo.spring;   ...

  • JVM之字节码――字节码增强应用(一)_kenvifire-ChinaUnix博客

    时间:2023-01-11 17:54:34

    前面讲过了字节码增强的一些类库,接下来,我们在这些类库的基础上实现一些具体的应用,主要都是基于Javassist的应用。 1、性能测试 在一些特殊的场景下,我们需要对代码的性能进行统计,以发现耗费时间最长的地方,然后对代码进行优化。或者说是我们需要统计所有方法的执行时间和次数,看哪个方法的执行时间和...

  • Java字节码的介绍

    时间:2023-01-11 17:40:23

    即便对那些有经验的Java开发人员来说,阅读已编译的Java字节码也很乏味。为什么我们首先需要了解这种底层的东西?这是上周发生在我身上的一个简单故事:很久以前,我在机器上做了一些代码更改,编译了一个JAR,并将其部署到服务器上,以测试性能问题的一个潜在修复方案。不幸的是,代码从未被检入到版本控制系统...

  • jvm 字节码执行 (二)动态类型支持与基于栈的字节码解释执行

    时间:2023-01-08 22:59:24

    动态类型语言动态类型语言的关键特征是它的类型检查的主体过程是在运行期而不是编译期。举例子解释“类型检查”,例如代码:obj.println("hello world");假如这行代码是在Java语言中,并且变量obj的静态类型为java.io.PrintStream,那么变量obj的实际类型就必须是...

  • OpenJDK源码研究笔记(七)–Java字节码文件(.class)的结构

    时间:2023-01-06 07:16:49

    最近在看OpenJDK源码的过程中,顺便看了Java编译器(javac)的源码。为了理解javac的源码,需要先搞懂Java字节码文件(.class)的结构。于是,我就认真看了下OpenJDK中Java字节码文件的相关源码,结合大学期间对JVM的研究,参考JVM规范第2版(英文原版),特意整理下。J...

  • 深入理解Java虚拟机读书笔记5----虚拟机字节码执行引擎

    时间:2022-12-29 15:35:01

    五 虚拟机字节码执行引擎   1 运行时栈帧结构     ---栈帧是用于支持虚拟机进行方法调用和方法执行的数据结构,是虚拟机运行时数据区中的虚拟机栈的栈元素。     ---栈帧中存储了方法的局部变量表、操作数栈、动态连接、方法返回地址和一些附加信息。     -...

  • [深入理解Java虚拟机]第六章 字节码指令简介

    时间:2022-12-29 15:18:14

    Java虚拟机的指令由一个字节长度的、代表着某种特定操作含义的数字(称为操作码 ,Opcode ) 以及跟随其后的零至多个代表此操作所需参数(称为操作数,Operands )而构成。由于Java虚拟机采用面向操作数栈而不是寄存器的架构(这两种架构的区别和影响将在第8章中探讨),所以大多数的指令都...

  • 深入理解Java虚拟机 - 字节码指令集

    时间:2022-12-29 15:18:20

    Java虚拟机的指令由一个字节长度的、 代表着某种特定操作含义的数字(称为操作码,Opcode)以及跟随其后的零至多个代表此操作所需参数(称为操作数,Operands)而构成。 字节码与数据类型 在Java虚拟机的指令集中,大多数的指令都包含了其操作所对应的数据类型信息。 例如,iload指...

  • 深入理解JAVA虚拟机学习笔记13——字节码指令2(运算指令)

    时间:2022-12-29 15:18:14

    本篇继续字节码指令的学习,开始之前,先巩固一下基础知识,Java中基本数据类型的范围。 1. 整型: 1.1 byte:数据类型是8位、有符号的整数,取值范围-128~127; 1.2 short: 数据类型是 16 位、有符号的整数,取值范围-32768~32767; 1.3 int:数据类型是3...

  • 深入理解Java虚拟机(字节码执行引擎)

    时间:2022-12-29 13:15:39

    本文首发于微信公众号:BaronTalk 执行引擎是 Java 虚拟机最核心的组成部分之一。「虚拟机」是相对于「物理机」的概念,这两种机器都有代码执行的能力,区别是物理机的执行引擎是直接建立在处理器、硬件、指令集和操作系统层面上的,而虚拟机执行引擎是由自己实现的,因此可以自行制定指令集与执行引...

  • 《深入理解java虚拟机》读书笔记-第八章虚拟机字节码执行引擎

    时间:2022-12-29 13:11:01

    一概述 本文属于《深入理解java虚拟机》读书笔记系列,执行引擎是java虚拟机的核心组成部分之一。在java虚拟机规范中制定了虚拟机字节码执行引擎的概念模型,执行引擎在执行JAVA代码的时候可以选择解释执行(通过解释器执行)和编译执行(通过即使编译器产生本地代码执行)两种选择。 我们知道,java...

  • [深入理解Java虚拟机]第八章 字节码执行引擎-基于栈的字节码解释执行引擎

    时间:2022-12-29 13:10:55

    许多Java虚拟机的执行引擎在执行Java代码的时候都有解释执行(通过解释器执行)和编译执行(通过即时编译器产生本地代码执行)两种选择,在本章中,我们先来探讨一下在解释执行时,虚拟机执行引擎是如何工作的。 解释执行 Java语言经常被人们定位为“解释执行”的语言,在Java初生的JDK 1....

  • 重读《深入理解Java虚拟机》五、虚拟机如何执行字节码?程序方法如何被执行?虚拟机执行引擎的工作机制

    时间:2022-12-29 13:06:28

          Class文件二进制字符流通过类加载器和虚拟机加载到内存(方法区)完成在内存上的布局和初始化后,虚拟机字节码执行引擎就可以执行相关代码实现程序所定义的功能。虚拟机执行引擎执行的对象是方法(均特指非本地方法),方法是 着一个程序所定义的一个功能的载体,实现预定的业务功能或者特定的功能等。虚...

  • [深入理解JVM 六]---虚拟机字节码执行系统

    时间:2022-12-29 10:47:47

    前边介绍了jvm的运行时内存分配,类文件的结构,以及类加载机制,这样,一个编译好的class二进制字节码文件就已经被加载完毕,等待下一步的执行。接下来分几个部分来介绍这部分内容。首先方法的调用和执行依赖于虚拟机栈,第一部分详细介绍一下虚拟机栈的栈帧结构。第二部分介绍方法的调用。第三部分介绍方法的执行...

  • 深入理解Java虚拟机(七)字节码执行引擎(栈帧、动态连接、方法调用)

    时间:2022-12-29 10:43:23

    执行引擎是Java虚拟机最核心的组成部分之一。“虚拟机”是一个相对于“物理机”的概念,这两种机器都有代码执行能力,其区别是物理机的执行引擎是直接建立在处理器、硬件、指令集和操作系统层面上的,而虚拟机的执行引擎则是由自己实现的,因此可以自行制定指令集与执行引擎的结构体系,并且能够执行那些不被硬件直接支...

  • 深入理解JVM - 虚拟机字节码执行引擎

    时间:2022-12-29 10:43:29

    执行引擎是Java虚拟机最核心的组成部分之一,输入的是字节码文件,处理过程是字节码解析的等效过程,输出的是执行结果。 1、栈帧 栈帧是用于支持虚拟机进行方法调用和方法执行的数据结构,它是虚拟机运行时数据区中的虚拟机栈的栈元素。栈帧存储了方法的局部变量表、操作数栈、动态连接和方法返回地址等信息。每一...