【发布时间】:2018-12-16 11:58:39
【问题描述】:
我听说在 Kotlin 中创建新对象很便宜。 Kotlin 创建对象的内存方面与 Java 有何不同?从data class 和class 创建对象的成本是否存在差异?
【问题讨论】:
标签: java memory-management kotlin
我听说在 Kotlin 中创建新对象很便宜。 Kotlin 创建对象的内存方面与 Java 有何不同?从data class 和class 创建对象的成本是否存在差异?
【问题讨论】:
标签: java memory-management kotlin
我认为你的意思是 Kotlin 以 JVM 为目标,所以我将告诉你这个目标。
Kotlin 使用与 Java 相同的字节码,因此总体性能是相同的(与 Java 相比,Kotlin 中的某些操作可以更少或更多优化(感谢编译器或 stdlib)。
Data 类只是普通类,额外生成了 toString()、equals()、hashCode() 和 clone() 方法,因此它们具有与普通类相同的性能。
【讨论】:
new 将对象放在堆上。这就是Java有原语的原因。 Kotlin 没有原语,在 Kotlin 演示文稿中,我听到 Kotlin 团队说“对象很便宜”。所以我想知道有什么区别
如果 Java 和 Kotlin 都针对相同的目标 VM 编译,我希望没有区别 - 哪个源代码生成相同的字节码应该没有区别。
至于data class,Hiosdra 正确地pointed out 认为这只是一个语法糖,告诉编译器派生一些对数据保存类有用的标准方法(请参阅the documentation)。
【讨论】: