gpt4 book ai didi

java - 如何从生成的 Java 类文件中删除未使用的常量

转载 作者:行者123 更新时间:2023-12-05 01:22:57 25 4
gpt4 key购买 nike

我经常在我的 Java 程序中使用常量,但是在查看反编译的 Java 类文件时,我注意到整个程序中所有常量的使用都被它们的字面值所取代,而顶部的原始声明和赋值该类的仍然存在,我想知道这些变量是否只是坐在那里浪费内存,因为它们没有在文件中的任何地方使用。并且是否有一种方法可以将常量限制为仅在编译时使用,并在生成类文件后将其删除。

最佳答案

编译器足够聪明,可以在这种情况下有效地使用内存。而且,即使假设您确实浪费了每个常量的内存,让我们做一个思想实验,看看现实中可能有多少“空间”。

假设我们混合了字符串、整数和其他基本类型。字符串中的每个字符在 java 中是 2 个字节,而一个 int 是 4 个字节。假设我们有 75,000 个 char 常量和 25,000 个 int 常量。那是 75k * 2 所以 150k 字节或 ~150 KB 的内存用于字符串常量对于 25k * 4 或 100k 的整数,大约 100 KB 的内存。

总共约 250kb。

现在你能买到的最基本的电脑至少有 4gb 的内存,更有可能是 8gb 到 16gb。

所以 250kb/4000000kb * 100 = 最低规范现代计算机的 0.00625%。

现在,如果您正在运行一些微 Controller 或其他有限的硬件,它可能是某种东西,但即使那样它也是值得怀疑的,并且您可能没有使用 java。

根据一般经验,编译器和解释器往往非常擅长他们的工作,并且相信他们在大多数时候做正确的事情,对于大多数程序员和程序来说就足够了。

有时某些模式(例如大量创建新对象,然后触发垃圾回收或其他类似问题)会对性能产生很大影响。

关键是要知道语言/计算机/使用模式中的实际瓶颈和问题所在。

一旦我们进入分布式空间和大规模,它确实会变得更加复杂 - 但同样,除非您在那种环境中工作,否则您通常不需要考虑它。

将您的期望集中在您的用例上,如果您正在为只有少数人使用的东西优化 10 毫秒增益,这可能是浪费时间 - 除非您这样做是为了好玩。

关于java - 如何从生成的 Java 类文件中删除未使用的常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73188073/

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