我们常用到的动态特性主要是反射,在运行时查找对象属性、方法,修改作用域,通过方法名称调用方法等。但反射的性能开销较大,Javassit是一个东京研究院开发的第三方库,提供了运行时操作Java字节码的方法。 类似字节码操作方法还有ASM,几种动态编程方法相比较,在性能上Javassist高于反射,但低于ASM。
package fanshe;
public class Person...
分类:
编程语言 时间:
2015-08-03 16:57:19
阅读次数:
250
引言 什么是 ASM ? ASM 是一个 Java 字节码操控框架。它能被用来动态生成类或者增强既有类的功能。ASM 可以直接产生二进制 class 文件,也可以在类被加载入 Java 虚拟机之前动态改变类行为。Java class 被存储在...
分类:
其他好文 时间:
2015-08-03 06:47:06
阅读次数:
194
针对JVM的模板解释器,研究:
字节码的resolve过程。...
分类:
其他好文 时间:
2015-08-03 06:46:18
阅读次数:
130
针对JVM的模板解释器,探讨:
如何根据opcode和寻址模式,将bytecode生成汇编码。...
分类:
其他好文 时间:
2015-08-03 06:43:31
阅读次数:
159
java的工作方式;我们要做的事,就是编写源代码文件,然后由javac编译程序把文件进行编译,得到字节码文件,然后再在java虚拟机运行此程序;
分类:
编程语言 时间:
2015-08-02 19:47:06
阅读次数:
112
本文主要介绍Java虚拟机的内存分布以及对象的创建过程。一、Java虚拟机的内存分布文章开始前读者需要了解Java虚拟机的运行时数据区是怎样划分的。如下图所示:1、程序计数器(Program Counter Register) 程序计数器是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行....
分类:
编程语言 时间:
2015-08-01 18:47:35
阅读次数:
180
回顾:1.Linux 操作系统、开源的、免费 服务器端 目录、挂载点、安全级别高 /:根目录 /home/soft01:主目录/家2.java开发环境 1).java源文件,经过编译,生成.class字节码文件 JVM加载.class并运行.cl...
分类:
其他好文 时间:
2015-08-01 18:46:24
阅读次数:
104
大体上,class的生命周期是这样子的:加载相关内容classLoader是什么?通过一个类的全限定名,获取这个类的二进制字节码。区分两种classLoader:1、bootStrap,C++实现,是虚拟机的一部分;2、其他,java实现,虚拟机外部,继承自java.lang.ClassLoad.....
分类:
其他好文 时间:
2015-07-31 21:41:35
阅读次数:
83
Java是解释执行的,包括动态链接的特性,都给解析或运行期间提供了很多灵活扩展的空间。面向对象语言的继承、封装和多态的特性,在JVM中是怎样进行编译、解析,以及通过字节码指令如何确定方法调用的版本是本文如下要探讨的主要内容,全文围绕一个多态的简单举例来看在JVM中是如何实现的。...
分类:
其他好文 时间:
2015-07-30 21:36:32
阅读次数:
148
各种不同平台的虚拟机与所有平台都统一使用的程序存储格式---字节码(ByteCode)是构成平台无关性的基石。Class文件是一组以8位字节为基础单位的二进制流,各个数据项目严格按照顺序紧凑地排列在Class文件之中,中间没有添加任何分隔符,这使得整个Class文件中存储的内容几乎全部是程序运行.....
分类:
其他好文 时间:
2015-07-30 18:26:01
阅读次数:
101