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

how JVM perform null check on an object internally

JVM 如何在内部对对象执行空值检查。 假设某个方法 return 是一个对象。java 如何在内部执行此空值检查?

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

就Java代码而言,它与

非常相似
if (x == null) throw new NullPointerException();
x.useX();

然而,在针对本机代码进行优化时,CPU 使用了许多技巧,例如

  • 分支预测,几乎从未被采纳的分支可以被跳过并有效地并行检查。
  • 零页可以取消映射,导致使用时出现分段错误。 IE。这导致没有内联代码,但信号处理程序可以计算出哪一行代码触发分段错误并导致它抛出 NullPointerException。
  • 运行时的分析可以确定字段不能为空,例如因为对 null 进行了显式检查,或者因为它在代码中使用了不止一次。这意味着不需要检查每次访问。