java 字节码校验


 当类加载器将新加载的java平台类的字节码传递到虚拟机时,这些字节码首先要接受校验器的校验。校验器负责检查那些无法执行的明显有破坏性的操作。除了系统类之外,其他类都要被校验。但是可以是使用非正式的指令钝化校验器。

java -noverify Hello

下面的一些列举是校验器执行的一些检查:
1.变量要在使用前初始化
2.方法调用与对象引用类型之间要匹配
3.访问私有数据和方法的规则没有被违反
4.对本地变量的访问都在运行的堆栈内
5.运行时堆栈没有溢出
如果这些检查没有通过,类不会被加载。

下面一段代码可以用来测试,先将类导入到工作空间,然后钝化校验器,查看效果:
import java.applet.Applet;
import java.awt.Graphics;

public class VerifyTest extends Applet{
	   public static void main(String[] args) {
		System.out.println("1+2="+fun());
	}
	   
	   public static int fun(){
		   int m;
		   int n;
		   m=1;
		   n=2;
		   int r=m+n;
		   return r;
	   }
	   
	   public void paint(Graphics g){
		  g.drawString("1+2="+fun(), 20, 20);  
	   }

}

内容仅作了解就可以了。

你可能感兴趣的:(java)