微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

@HotSpotIntrinsicCandidate 和双/浮动拳击

如何解决@HotSpotIntrinsicCandidate 和双/浮动拳击

因此,我正在编写一些代码,这些代码会在最内层循环中对原始类型进行装箱。我查看了 Integer.valueOf 以检查缓存了哪些 int 范围 - 顺便说一下:为什么认情况下只有 Byte 范围? - 首先注意到 - 令我满意的是 - 范围可以通过 JVM 属性进行配置,然后,这是一个内在方法。这看起来有点奇怪,因为该方法非常简单,我希望 Hotspot 编译和内联代码已经是最佳的,但是还可以。然后我转向浮点值,它们仍然是内在的,尽管方法字面上只是调用类的构造函数,因为没有明显的缓存策略。

在装箱浮点原语时,Hotspot 可以做哪些优化(例如一些 jvm 实现)?

解决方法

Double.valueOfFloat.valueOf 以及其他类似的 valueOf 是 HotSpot JVM 中的内在方法。 JVM 确实knows 关注这些方法并特别对待它们。

EliminateAutoBox优化,默认开启。优化的想法是摆脱多余的装箱/拆箱。 JIT 编译器会查找匹配的 Double.valueOf()/doubleValue() 对,并在可能的情况下同时消除这两个调用。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。