java 字节码校验
2016-12-30 16:35
363 查看
转载地址:http://blog.csdn.net/seacean2000/article/details/11516729
plain copy
print?
java -noverify Hello
下面的一些列举是校验器执行的一些检查:
1.变量要在使用前初始化
2.方法调用与对象引用类型之间要匹配
3.访问私有数据和方法的规则没有被违反
4.对本地变量的访问都在运行的堆栈内
5.运行时堆栈没有溢出
如果这些检查没有通过,类不会被加载。
下面一段代码可以用来测试,先将类导入到工作空间,然后钝化校验器,查看效果:
[java] view
plain copy
print?
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平台类的字节码传递到虚拟机时,这些字节码首先要接受校验器的校验。校验器负责检查那些无法执行的明显有破坏性的操作。除了系统类之外,其他类都要被校验。但是可以是使用非正式的指令钝化校验器。
[java] viewplain copy
print?
java -noverify Hello
下面的一些列举是校验器执行的一些检查:
1.变量要在使用前初始化
2.方法调用与对象引用类型之间要匹配
3.访问私有数据和方法的规则没有被违反
4.对本地变量的访问都在运行的堆栈内
5.运行时堆栈没有溢出
如果这些检查没有通过,类不会被加载。
下面一段代码可以用来测试,先将类导入到工作空间,然后钝化校验器,查看效果:
[java] view
plain copy
print?
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);
}
}
内容仅作了解就可以了。
相关文章推荐
- Struts2和SpringMvc的区别
- SpringMVC中post、get乱码解决
- SpringMVC结合Jcrop实现图片裁剪
- Java设计模式
- struts2一些概念介绍和标签的使用
- springmvc工作原理
- Eclipse安装Activiti Designer插件
- java 观察者模式
- JAVA静态代码审查之checkstyle
- JAVA静态代码审查之checkstyle
- RxJava
- 关于 RxJava
- Eclipse常用设置
- 关于在eclipse开发web时鼠标移动到图片上显示文字问题
- JVM基础 之Java HotSpot虚拟机中的内存管理
- SpringMVC+Spring+Hibernate+Maven框架整合
- Java语言基础-10.插入排序
- 反射+泛型+注解(demo)
- Quartz与spring集成及集群环境配置
- springboot(十)定时任务