Java JIT编译器是否在没有副作用的情况下删除方法的调用?

时间:2016-09-07 12:27:54

标签: java jit

我有一个简单的方法来检查输入字符串是否有效xpath

private boolean isXpath(String value) {
    boolean isXpath = true;
    try {
        XPath xpath = XPathFactory.newInstance().newXPath();
        xpath.compile(value);
    } catch (XPathExpressionException e) {
        isXpath = false;
    }
    return isXpath;
}

我可以确定JIT编译器不会删除try块内的代码,因为它没有副作用吗?或者它有(可能的例外)?

1 个答案:

答案 0 :(得分:5)

死码Eliminatino不只是关于副作用,而且关于使用计算结果。由于您的方法返回cm.Accent,而在不执行isXpath块的情况下无法导出,因此JIT编译器无法将其消除。