background image

1.4 为什么 java 容易被反编译?

因为

java 程序是动态连接的。从一个类到另一个类的引用是符号化的。在静态连接的可

执行程序中。类之间的引用只是直接的指针或者偏移量。

相反在

java 的 class 文件中,指

向另一个类的引用通过字符串清楚的标明了所指向的这个类的名字。

如果引用是指向一个字段的话。这个字段的名字和描述符(字段的类型)会被详细说明。

如果引用指向一个成员方法,那么这个成员方法的名字和描述符(方法的返回值类型,
方法参数的数量和类型)会被详细说明。

包含对自己字段和成员方法的符号引用。

包含可选的调试信息。

(包括局部变量的名称和类型)

1.5 垃圾回收器缺点:

无法确认什么时候开始回收垃圾,无法确认是否已经开始收集,也无法确认要持续多长时