gpt4 book ai didi

Java 7 和反射 - 它会 self 优化吗?

转载 作者:行者123 更新时间:2023-12-01 18:38:53 25 4
gpt4 key购买 nike

只是一个简短的问题,而不是“我需要帮助!”问题,更多的是为了满足我的好奇心:)

我们编写了自己的自定义 jackson Json 序列化和反序列化器,它使用反射来序列化/反序列化对象。例如,对于序列化程序,它将使用 Introspector.getBeanInfo() 查找对象的属性,获取当前对象字段的 PropertyDescriptor 并在需要时调用读取或写入方法来获取和设置值。

起初,这需要相当长的时间(250-500 毫秒),但是在对序列化器进行多次调用之后,我们注意到这会急剧下降,降至大约 25-50 毫秒。通过浏览互联网,我了解到 JVM 可以优化反射,但它是如何做到这一点的呢?它实际上是否跟踪每次调用以获取读取或写入方法并计算出字节码以便跳过反射部分?

最佳答案

反射方法调用在特定方法 16 次调用(默认膨胀阈值)后进行优化。优化后的版本依赖于生成的字节码,这意味着基本上不再涉及反射。

但是,该优化仅涉及在已知 Method 实例上调用 invoke 的开销,而使用反射的大部分开销来自成员查找。这方面肯定会受益于 JIT 编译,默认情况下,同一段代码经过 10,000 次传递后就会发生。

通过缓存 Method 实例,查找优化也可能发生在 Jackson 本身内。

关于Java 7 和反射 - 它会 self 优化吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20731952/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com