gpt4 book ai didi

javac - javac生成的class文件总是一样的吗?

转载 作者:行者123 更新时间:2023-12-04 15:36:03 25 4
gpt4 key购买 nike

目前,我们正在为一个大型项目(大约 2000 个源文件)重新编写所有构建系统的脚本,并且一直在谈论对文件进行二进制比较以确保一切正确,这导致了以下问题:javac 的输出保证跨编译相同还是可能会发生变化?

Another question暗示常量池可以有不同的顺序,但假设我们能够控制进入 javac 的文件的顺序。通话是否还有潜在的分歧?如果这也可能会影响事情,我们将使用 Ant 和 Maven 作为构建的一部分。

最佳答案

字节码绝对不能保证相同;一方面,允许编译器执行不影响任何保证行为的优化。 Java 语言规范甚至在一些地方提到了编译器可能执行的优化;例如,字符串连接运算符 + ,它指出:

An implementation may choose to perform conversion and concatenation in one step to avoid creating and then discarding an intermediate String object. To increase the performance of repeated string concatenation, a Java compiler may use the StringBuffer class or a similar technique to reduce the number of intermediate String objects that are created by evaluation of an expression.



[ link ]

关于javac - javac生成的class文件总是一样的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9928330/

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