这句话感觉道出了GC的本质 1.程序计数器(Program Counter Register) 程序计数器是一块较小的内存空间,它的作用可以看做是当前线程所执行的字节码的行号指示器。字节码解释器工作时就是通过改为这个计数器的值来选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理、线程恢复等基...
分类:
编程语言 时间:
2015-04-04 12:09:53
阅读次数:
204
虽然网上有很多的做饭,但是对于新手的朋友们来说,并不是能够看得懂。
反射技术:可以对一个类进行解刨,首先要获取该类的字节码文件内容,并将内容都封装成了对象。
访问属性,方法,以及构造函数,然后在调用构造函数,创建对象。
调用空参数的构造函数用的是Class类中的newInstance方法。
调用带参数的构造函数用的是构造函数本身的newInstance方法。
在这里我只做了两种方法,利用...
分类:
其他好文 时间:
2015-04-04 10:44:18
阅读次数:
112
参考源码版本:Android-4.4.4_r2
提示:大部分分析直接注释在代码内。
dvmInterpret函数中调用了dvmInterpretPortable函数对方法的字节码进行解释执行,dvmInterpret在dalvik/vm/interp/Interp.cpp文件中。
dvmInterpretPortable函数在dalvik/vm/mterp/out/Int...
分类:
其他好文 时间:
2015-04-04 08:02:46
阅读次数:
264
1.static 初始化 static成员变量与static语句块在该类对应的class字节码被加载的时候按顺序执行。如: Class.forName("test.StaticTest"); 此时,StaticTest类中的static成员变量将会被初始化,static语句块将被执...
分类:
编程语言 时间:
2015-04-03 14:58:30
阅读次数:
199
Smali Registers
介绍Smali中Register相关知识
简介
Dalvik字节码中,register(寄存器)一定是32位,它可以用于存放任何类型的值。如果需要存放64位的数据(比如Long和Dobule),则需要两个寄存器。
指定一个方法中寄存器数目
有两种方法可以指定一个方法中用到的寄存器数目。.registers num指令用于指定该方法中用...
分类:
其他好文 时间:
2015-04-03 00:20:47
阅读次数:
287
这部分涉及的内容比较多,我会尽量从最基础开始说起,但需要读者一定的android开发基础。但注意可能讲解详细得令人作呕,请根据个人理解程度斟酌。 APK、Dalvik字节码和smali文件APK文件 大家都应该知道APK文件其实就是一个MIME为ZIP的压缩包,我们修改ZIP后缀名方式可以看到...
分类:
其他好文 时间:
2015-04-02 15:03:15
阅读次数:
237
java虚拟机可以使用即时编译和字节码(为达到独立于平台的特性)两种,对使用频繁的字节码序列将编译成机器码实现即时编译。java中基本类型的字节数是固定的(为方便移植),与C/C++不同(它们只确定了相对大小关系),java中byte(1)short(2)int(4)long(8)float(4)double(8).ja..
分类:
编程语言 时间:
2015-03-31 20:33:30
阅读次数:
148
看到HorkeyChen写的文章《[WebKit] JavaScriptCore解析--基础篇(三)从脚本代码到JIT编译的代码实现》,写的很好,深受启发。想补充一些Horkey没有写到的细节比如字节码是如何生成的等等,为此成文。 JSC对JavaScript的处理,其实与Webkit对CSS的.....
分类:
编程语言 时间:
2015-03-31 12:25:57
阅读次数:
139
byte buffer一般在网络交互过程中java使用得比较多,尤其是以NIO的框架中; 看名字就知道是以字节码作为缓冲的,先buffer一段,然后flush到终端。 而本文要说的一个重点就是HeapByteBuffer与DirectByteBuffer,以...
分类:
编程语言 时间:
2015-03-31 01:15:34
阅读次数:
174
#局部变量的实现 > [git@osc地址][1] 在字节码层面,每一个方法都有一个局部变量数组,用来存储当前方法的参数,在方法内声明的变量,如果是非静态方法还要存储当前方法实例的引用this。在我们平时使用java的时候...
分类:
其他好文 时间:
2015-03-30 21:19:02
阅读次数:
199