ProGuard是一个压缩、优化和混淆Java字节码,它可以删除字节码中无用的类、字段、方法和没用的注释,还可以对类、字段、方法和属性进行混淆。
字节码其实包含了大量的调试信息,从而很容易被反编译,ProGuard的混淆器就能删除这些调试信息并进行混淆。
ProGuard也能在字节码级提供性能优化,通过某些内部方法。
通过修改proguard.cfg文件实现定制化,如...
分类:
其他好文 时间:
2015-03-17 12:30:49
阅读次数:
113
程序计数器
指令执行的指示器.
每个线程都有独立的程序计数器,互无影响,我们称这类区域为线程私有的内存.
执行Java方法,计数器记录的是正在执行的虚拟机字节码指令地址;如果执行的是native方法,这个计数器为空.
此内存区域唯一一个没有规定任何OutOfMemoryError的区域.
虚拟机栈
Java虚拟机栈也是线程私有的,它的生命周期与线程相同.
虚拟机栈描述的是Java方法执行的内存模型:...
分类:
编程语言 时间:
2015-03-17 10:27:53
阅读次数:
176
该类不能运行,执行Test方法,需要空构造函数demo3: 调用指定构造方法demo2: 调用默认构造方法demo1: 获得.class 字节码对象,对应Class对象. 3种方法通过反射获取成员变量,修改私有变量是可见的通过反射的方式执行类中的方法自动装配工厂模式: 使用接口, 接收通过工厂类返回...
分类:
其他好文 时间:
2015-03-16 19:17:04
阅读次数:
193
Java Servlet(java服务器小程序)是一个基于java技术的web组件,有Servlet容器说管理,生成动态的内容。Servlet被编译成平台中的字节码。可以被动态的加载到web服务器中运行。Servlet容器,也叫Servlet引擎。分为:独立的Servlet容器。进程内的Servle...
分类:
其他好文 时间:
2015-03-15 16:29:02
阅读次数:
151
反射就是把Java类中的各种成分映射成相应的java类。Class类-->java程序中的各个java类属于同一事物,描述这类事物的Java类名就是Class。Class.forName的作用:返回类的字节码,返回的方式有两种,一种是这个类曾被加载过,则直接从JVM中返回字节码,另一种是JVM中没用...
分类:
编程语言 时间:
2015-03-14 20:01:05
阅读次数:
237
ClassLoader类加载器 常见的类加载器有BootStrapClassLoader<-ExtClassLoader<-AppClassLoader<-用户ClassLoaderBootStrapClassLoader:加载Java自带的核心类;ExtClassLoader加载在/jre/li....
分类:
其他好文 时间:
2015-03-14 16:39:51
阅读次数:
97
一:代理
代理类和目标类实现了相同的接口,相同的方法。
如果采用工厂模式和配置文件的方式进行管理,则不需要修改客户端程序,在配置文件中配置使用目标类还是代理类,这样以后就很容易切换。(例如Spring框架的实现)
AOP:AOP的目标就是要使交叉业务模块化,可以将切面代码移动到原始方法的范围。
二:动态代理
JVM可以在运行期间动态生成出类的字节码,这种动态生成的类往往被用作代...
分类:
其他好文 时间:
2015-03-14 15:28:22
阅读次数:
131
Java字节码文件的主体结构分为一下几个部分:Class文件头部、常量池区域、当前类的描述信息、字段列表、方法列表、属性列表。Class文件头部 任何的class文件的前四个字节的内容就是CA FE BA BE 。Java是一种咖啡,故称之为coffee baby。这四个字节作为该文件的校验码。-....
分类:
编程语言 时间:
2015-03-14 15:11:12
阅读次数:
127
引子 Java虚拟机是Java应用程序的执行环境。通常而言,JVM是由一组严格的指令集和一个复杂的内存模型来具体实现的虚拟机,它用来解释编译好的java字节码文件,将字节码转换为特定机器可以执行的本机代码(native code)。它也可以指代某一软件运行时的进程实例。这里,我们以hotspot.....
分类:
其他好文 时间:
2015-03-13 23:41:40
阅读次数:
193
Java虚拟机运行时数据区
运行时数据区主要包括:方法区、堆、虚拟机栈、本地方法栈、程序计数器。
其中方法区和栈是线程共享的区域,另外三块区域是每个线程私有的区域。各个数据区的功能简单说明如下:
程序计数器:当前线程所执行的字节码的行号指示器。
虚拟机栈:描述Java方法执行的内存模型——每个方法在执行的同时都会创建一个栈帧用于存储局部变量表、操作数栈、动态链接、方法出口等信息。每一个方法...
分类:
编程语言 时间:
2015-03-13 22:24:59
阅读次数:
223