JVM如何在内部对对象执行空检查

时间:2016-06-03 18:03:41

标签: java jvm

JVM如何在内部对对象执行空值检查。 假设某个方法返回一个对象.ow在内部执行此null检查吗?

Parent parent=Test.getParent();
if(parent!=null){
    A a=parent.getAObject();`enter code here`
    if(a!=null){
        B b=a.getBObject();
    }
}

1 个答案:

答案 0 :(得分:1)

就Java代码而言,它与

大致相同
if (x == null) throw new NullPointerException();
x.useX();

但是,当优化到本机代码时,CPU会使用许多技巧,例如

  • 分支预测,可以跳过并且有效地检查几乎从不采用的分支。
  • 零页面可以取消映射,在使用时会导致分段错误。即这导致没有内联代码,但信号处理程序可以解决哪行代码触发了分段错误并导致它抛出NullPointerException。
  • 运行时
  • anaylsis可以确定一个字段不能为空,例如因为明确检查null或者因为它在代码中被多次使用。这意味着不需要检查每次访问。