This is a list of the instructions that make up theJava bytecode, an abstract machine language that is ultimately executed by theJava virtual machine....
分类:
编程语言 时间:
2014-10-21 21:24:20
阅读次数:
277
java 虚拟机自动内存管理。java虚拟机在执行java程序的过程中会把它所管理的内存划分为若干个不同区域1 程序计数器每个线程都有一个独立的计数器,用来指示需要执行的字节码的位置。2 虚拟机栈虚拟机栈是用来描述java方法执行的内存模型,每个方法被执行的时候都会同时创建一个栈帧用于储存局部变量表...
分类:
编程语言 时间:
2014-10-21 19:37:14
阅读次数:
197
刚学typedef,当typedef后的类型别名用在其他变量声明中时,可能会对其使用有点迷惑 1 int main(int argc, char *argv[]) 2 { 3 int x = 3; 4 typedef int * p; 5 p const cp = &x; ...
分类:
其他好文 时间:
2014-10-21 00:39:29
阅读次数:
157
其实,我不确定Quercus是否可以被认定为一门JVM语言;其次Quercus这个东东分开源版与商业版,开源版只能解释执行、而商业版能编译成Java字节码。但我知道国内,阿里巴巴很早就在使用它,当然,他主要是把它作为一个前端页面的模版引擎,提供给用户自定义商铺样式。这也是一种典型的使用场景。 ...
分类:
其他好文 时间:
2014-10-20 13:16:42
阅读次数:
224
在前一篇文章中,我们通过分析OAT文件的加载过程,认识了OAT文件的格式,其中包含了原始的DEX文件。既然ART运行时执行的都是翻译DEX字节码后得到的本地机器指令了,为什么还需要在OAT文件中包含DEX文件,并且将它加载到内存去呢?这是因为ART运行时提供了Java虚拟机接口,而要实现Java虚拟机接口不得不依赖于DEX文件。本文就通过分析ART运行时加载类及其方法的过程来理解DEX文件的作用。...
分类:
移动开发 时间:
2014-10-20 02:09:12
阅读次数:
351
之前看过一篇关于return和finally执行顺序的文章,仅在Java的语言层面做了分析,其实我倒觉得直接看bytecode可能来的更清晰一点。
最近一直在看Java虚拟机规范,发现直接分析bytecode更能加深对Java语言的理解。
先看一个只有try-finally,没有catch的例子。
try - finally
public class ExceptionTest {...
分类:
其他好文 时间:
2014-10-19 23:18:20
阅读次数:
225
在本系列的最后三篇文章中,我展示了如何用 Javassist 框架操作类。这次我将用一种很不同的方法操纵字节码——使用 Apache Byte Code Engineering Library (BCEL)。与 Javassist 所支持的源代码接口不同,BCEL 在实际的 JVM 指令层次上进行操...
分类:
编程语言 时间:
2014-10-19 23:00:52
阅读次数:
421
本系列的第 4 部分和第 5 部分讨论了如何用 Javassist 对二进制类进行局部更改。这次您将学习以一种更强大的方式使用该框架,从而充分利用 Javassist 对在字节码中查找所有特定方法或者字段的支持。对于 Javassist 功能而言,这个功能至少与它以类似源代码的方式指定字节码的能力同...
分类:
编程语言 时间:
2014-10-19 22:52:12
阅读次数:
445
讲过了 Java 类格式和利用反射进行的运行时访问后,本系列到了进入更高级主题的时候了。本月我将开始本系列的第二部分,在这里 Java 类信息只不过是由应用程序操纵的另一种形式的数据结构而已。我将这个主题的整个内容称为classworking。我将以 Javassist 字节码操作库作为对 clas...
分类:
编程语言 时间:
2014-10-19 22:51:19
阅读次数:
350
;第1章 Java概述编译java application源程序文件将产生相应的字节码文件,这些字节码文件别的扩展名为.java执行一个java程序fristapp的方法是运行java fristappmain()方法的返回类型是void在java代码中,public static void mai...
分类:
编程语言 时间:
2014-10-19 16:59:02
阅读次数:
528