![]() |
1
7
我不知道,但这对我来说是有意义的: jvm有一个内部字符串文本缓存。每次使用文本创建字符串时,jvm都必须在缓存中查找它,如果不存在,则存储它。 现在编译器可以用字符串文字内联一个最终变量,因为它在编译时是已知的,而且对于性能来说似乎是一个好主意。 所以你的代码:
由编译器重写为:
如果jvm实现不够聪明,则需要在本例中查找“myconst”三次。 如果不将const标记为“final”,编译器就不能“优化”它,因为变量可以在运行时更改。您的代码将被编译为1:1,jvm只需要在变量中查找对象。 顺便说一句:糟糕的jvm实现不应该定义您的编码风格。”“final”提供了很大的安全性,因此只要它不会真正影响您的性能:不管它是提高还是降低您的速度—不管怎样,对于下一个jvm都是不同的 |
![]() |
2
2
课文解释了,读一下就行了。 但要改写它: 因为它更快。 blackberry jvm更好地使用非最终版本的方式。 因为它的设计风格 |
![]() |
3
1
这是黑莓虚拟机的细节。其他虚拟机可能会有不同的做法。 旁注:在实际遇到性能问题(这称为“过早优化”)之前,不要太注意优化,因为如果这样做,很有可能性能会泄漏到您从未预料到的地方。 |
![]() |
4
0
有一个运行时字符串文本池。当您将字符串创建为final时,jvm会在每次使用时创建字符串的副本。如果字符串不是最终的,则在第一次创建字符串时将其插入字符串文字池,然后从池中查找字符串,这样可以避免复制字符串。 |
![]() |
Nerd in Training · 应用程序打开时调用函数 9 年前 |
|
Silnet · BlackBerry10:如何将文件从设备复制到pc 11 年前 |
![]() |
BigDan · 黑莓网络浏览器上的双语应用程序名称 12 年前 |
|
Sarah · 电池电量为10时启动/取消计时器 12 年前 |
![]() |
CAMOBAP · 黑莓手机-“您当前没有新的通知” 12 年前 |