Java JIT 编译器是否在没有副作用的情况下移除了方法调用?
Does Java JIT compiler remove method's call without side effects?
我有一个简单的方法来检查输入字符串是否有效的 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
块内的代码吗,因为它没有副作用?或者它有(可能的例外)?
Dead Code Eliminatino 不仅仅是关于副作用,还关于使用计算结果。由于你的方法 returns isXpath
不执行 try
块就无法导出,因此 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
块内的代码吗,因为它没有副作用?或者它有(可能的例外)?
Dead Code Eliminatino 不仅仅是关于副作用,还关于使用计算结果。由于你的方法 returns isXpath
不执行 try
块就无法导出,因此 JIT 编译器不可能消除它。