有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

性能java JIT何时进行了错误的优化?

JIT在10k调用后进行方法优化(-XX:+PrintCompilation),您可以使用-XX:CompileThreshold对其进行配置。我了解到不降低阈值的原因是JIT优化可能是错误的,或者您优化了不常用的代码。关于这方面,我有几个问题:

  1. 我认为错误的优化(即堆栈替换)是由于多态方法的延迟类加载。但在找到3个实现(我认为)后,JVM只需进行索引表查找。当然,如果你有更多的多态性impl,速度会受到影响。多态方法是JIT优化错误的唯一原因还是主要原因?如果没有,其他的是什么
  2. 如果我可以强制在astartup加载所有类,这样JVM就可以提前构建这样的索引表,那么提前进行整体优化不是更好吗?全部优化方法有什么问题?如果我的目标只是速度,代价是什么 与C++相比,如果我的源被关闭,这意味着没有第三方的LIB,就像低延迟系统,有没有办法强制优化,以提高性能,以更接近于C++?李>
  3. Peter Lawrey在他的oracle杂志文章中提到,可以通过在生产中人为运行足够的测试数据来达到阈值,从而启动JIT。在production env中这样做似乎很危险,一旦发生意外,您将被解雇。一定有更好的方法来降低风险
  4. 非常感谢关于这个主题的任何好的参考资料(包括java和c++)

更新:#3。千万不要指望java比C++快,只是想更接近。p>


共 (0) 个答案