我们知道当一个类的构造方法被设为私有时,这就意味着我们不能通过new关键字来直接创建这个对象,这时我们可以通过sun.misc.Unsafe来实现我们创建对象的目的,这个类是Java基于底层操作的API,可以直接进行底层操作,例如获得某个属性的偏移地址,甚至可以直接将class文件字节码载入到内存,...
分类:
编程语言 时间:
2015-03-13 18:09:51
阅读次数:
168
虚拟机位于机器和编译程序之间,这是一层抽象的虚拟的机器。虚拟机在任何平台上都提供给编译程序一个共同的接口,编译程序面向虚拟机,生成虚拟机能够理解的代码,然后解释器将虚拟机代码(java中就是字节码,class文件,只面向虚拟机)转换为特定系统的机器码执行。每个平台的解释器是不一样的,但是实现的虚.....
分类:
编程语言 时间:
2015-03-10 16:46:21
阅读次数:
162
类加载过程包括:加载->验证->准备->解析->初始化。按此顺序开始(非完成、可能交叉进行)初始化过程就是执行类构造器(为static变量、static{}块顺序组成)触发初始化的情况:1)new、getstatic、putstatic、incokestatic 4条字节码时,常见为new实例化、读...
分类:
编程语言 时间:
2015-03-09 22:14:30
阅读次数:
247
一、类加载器
类加载器用于加载Java的字节代码到Java虚拟机中,同时将配置文件等放在classpath目录下。
类加载器读取Java字节码文件并转换成Java.lang.Class类的一个实例,通过该实例的newInstance()方法可以创建该类对象(相当于调用空参数的构造方法)。基本上所有的类加载器都是 java.lang.ClassLoader类的一个实例。
ClassLoader...
分类:
其他好文 时间:
2015-03-08 20:14:33
阅读次数:
338
1.JDK版本尽可能的使用高版本的JDK版本,这通常可以带来免费的性能提升。当前前提是版本是稳定的,并且相应的应用服务器或者开源第三方工具等,也可以基于此版本稳定运行。2.字节码验证如果编译的代码,以及依赖的第三方jar包都是可信赖的话,可以关闭字节码验证,从而节省类加载时间,可通过-XVerify...
分类:
其他好文 时间:
2015-03-06 15:25:45
阅读次数:
156
python中如何调用dll,并向dll接口传递byte码流呢,请看本文章的代码展示...
分类:
编程语言 时间:
2015-03-05 19:35:25
阅读次数:
236
Java代码编译是由Java源码编译器来完成,流程图如下所示:Java字节码的执行是由JVM执行引擎来完成,流程图如下所示:Java代码编译和执行的整个过程包含了以下三个重要的机制:Java源码编译机制类加载机制类执行机制Java源码编译机制Java 源码编译由以下三个过程组成:分析和输入到符号表注...
分类:
编程语言 时间:
2015-03-04 16:52:10
阅读次数:
146
Java编译原理1、Java编译过程与c/c++编译过程不同Java编译程序将java源程序编译成jvm可执行代码--java字节码.Java在编译过程中一般会按照以下过程进行:(1)JDK根据编译参数encoding确定源代码字符集.如果不指定该参数,系统会根据操作系统的file.encoding...
分类:
编程语言 时间:
2015-03-04 16:49:06
阅读次数:
155
我们在开发Android应用的时候,常常会“参考”“借鉴”一下别人“想法”,你们懂的!然而,很多时候我们是看不见别人的源码的,这时候唯一解决的方法就是反编译apk,我们知道,当一个Android应用开发好了以后,会打包生成apk文件,然而Android打包工具会将java源码编译成.class字节码文件,将布局文件做乱码处理,还会将Nine Patch图片做特殊处理,如果不经过反编译而直接加压看其源码或者使用其资源文件,是很不理想的,下面我将记录下常见Android反编译工具的使用方法。...
分类:
移动开发 时间:
2015-03-04 11:08:43
阅读次数:
171
泛型是提供给javac编译器使用的,可以限定集合中的输入类型,让编译器挡住源程序中的非法输入,编译器编译带类型说明的集合时会去除掉“类型”信息,使程序运行效率不受影响,对于参数化的泛型类型,getClass()方法的返回值和原始类型完全一样。由于编译生成的字节码会去掉泛型的类型信息,只要能跳过编译器...
分类:
编程语言 时间:
2015-03-04 00:54:09
阅读次数:
211