gpt4 book ai didi

java - 旧的编译代码是否可以从最新 jre 上的紧凑字符串中受益?

转载 作者:行者123 更新时间:2023-11-30 06:29:05 24 4
gpt4 key购买 nike

假设我有一些由以前版本的编译器编译的旧代码。它会受益于 String 类的改进,减少内存消耗,还是我需要使用最新的 jdk 重新编译它?

最佳答案

,旧字节码将受益于紧凑字符串优化,而无需重新编译。这是因为它是对 String 类本身的实现的更改。字节码格式仍然相当高级,并且抽象了字符串、对象等的实际实现。

但是,还有另一个更改 ( JEP280 ),它确实需要重新编译才能受益。在 Java 的早期版本中,非常量字符串连接在底层被编译为对 StringBuilder(或 StringBuffer)的一系列调用。因此像 "I have "+ i + "cats" 这样的代码相当于 new StringBuilder().append("I have ").append(i).append("cats").toString()。 JEP280 对此进行了更改,将串联编译为 invokedynamic 指令,这实际上将字符串串联的实现移至运行时选择的库中。这本身并不是一种优化,但它允许将来添加更有效的字符串连接,而无需重新编译。

关于java - 旧的编译代码是否可以从最新 jre 上的紧凑字符串中受益?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46495110/

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