![]() |
1
13
我有足够的好奇心去测试它。源代码:
字节码:
所以你说得对,数组的字节码更短,因为数组创建有自己的jvm操作码。但那是什么意思?没什么,真的。它是一个虚拟机,所以绝对不能保证字节码指令的减少意味着实际物理CPU的工作减少。当然,我们可以开始分析,但那将是毫无意义的。如果真的有什么不同,不管是哪种方式,都不会有什么关系。如今物体的创造速度惊人。你可能得开始用
|
![]() |
2
14
使用java.lang.instrument.instrumentation检查大小:
我还有时间创建一个对象和一个字节[0](2次):对象是赢家。 (所有测试都在戴尔笔记本电脑、英特尔2GHz、Windos XP上运行)
使用
|
![]() |
3
5
根据 Java Language Spec ,“所有类和数组类型都继承类对象的方法”,所以我不知道byte[0]如何才能更高效。 这似乎是真的 first edition of the spec 以及:“数组类型的超类被视为对象”。 |
![]() |
4
3
使用数组更容易混淆读取器imho。 创建更少的对象比创建更多的对象更有效,因此如果它确实创建了足够多的对象,那么您创建的对象太多了。 |
![]() |
5
2
在Java中使用空数组作为锁对象的模式与性能几乎没有关系。
空数组(偶数
我习惯了做(从不在乎表现):
基元数组所需的字节码较少,因此可能
见: Is it okay to to make the lock transient for a Serializable class? |
![]() |
6
1
你的问题提到了“效率”,但没有说明你追求的是什么样的效率。迄今为止的答案涉及 大小 但在两种表示中取消引用和使用内部锁的运行时开销应该相同。
您还可以将使用内部锁的开销与使用
|
![]() |
Khyxes · Java监视器中的同步方法 7 年前 |
![]() |
pathikrit · Scala部分函数应用语义+同步锁定 8 年前 |
![]() |
user2514421 · 多线程 9 年前 |
|
G Vaid · 同步对象:锁定代码与锁定对象 9 年前 |
![]() |
hermit · 显示奇怪结果的同步块 9 年前 |
![]() |
Raj · 如何使构造函数同步? 11 年前 |