相关疑难解决方法(0)

在Java中使用final关键字可以提高性能吗?

在Java中,我们看到许多final可以使用关键字的地方,但它的使用并不常见.

例如:

String str = "abc";
System.out.println(str);
Run Code Online (Sandbox Code Playgroud)

在上述情况下,str可以final但通常不会这样做.

当一个方法永远不会被覆盖时,我们可以使用final关键字.类似地,如果一个类不会被继承.

在任何或所有这些案例中使用final关键字是否真的能提高性能?如果是这样,那怎么样?请解释.如果正确使用final真正重要的性能,应在Java程序员开发什么习惯,使关键字的最好用?

java final

332
推荐指数
8
解决办法
8万
查看次数

在Java中使用final变量是否可以改善垃圾收集?

今天,我和我的同事讨论了finalJava中关键字的用法,以改进垃圾收集.

例如,如果您编写如下方法:

public Double doCalc(final Double value)
{
   final Double maxWeight = 1000.0;
   final Double totalWeight = maxWeight * value;
   return totalWeight;  
}
Run Code Online (Sandbox Code Playgroud)

声明方法中的变量final将有助于垃圾收集在方法退出后从方法中未使用的变量清除内存.

这是真的?

java garbage-collection final

82
推荐指数
6
解决办法
5万
查看次数

访问最终局部变量比Java中的类变量更快吗?

我一直在寻找一些Java基本集合(的宝库,fastutil,HPPC)和我已经注意到,类变量有时声明为图案final的局部变量.例如:

public void forEach(IntIntProcedure p) {
    final boolean[] used = this.used;
    final int[] key = this.key;
    final int[] value = this.value;
    for (int i = 0; i < used.length; i++) {
        if (used[i]) {
          p.apply(key[i],value[i]);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我已经完成了一些基准测试,看起来这样做会快一点,但为什么会这样呢?我试图理解如果函数的前三行被注释掉,Java将采取哪些不同的做法.

注意:这似乎与这个问题类似,但这是针对c ++的,并没有说明它们被声明的原因final.

java optimization micro-optimization

14
推荐指数
2
解决办法
5412
查看次数

类文件格式的最终​​变量

文件格式是否为使用变量的最终关键字提供支持?
或者它只是从代码中推断出变量的有效终结性而JIT编译器基于它执行优化?

这里,在类文件格式文档中,他们提到了关于final关键字,但仅限于将其与final块final类一起使用的情况.最终变量
没有任何内容.

java performance jit final bytecode

6
推荐指数
1
解决办法
338
查看次数