gpt4 book ai didi

properties - Kotlin:如何避免委托(delegate)属性中的自动装箱(垃圾)?

转载 作者:IT老高 更新时间:2023-10-28 13:40:36 26 4
gpt4 key购买 nike

在我的软件中,我有一些使用属性委托(delegate)的各种值。

这是一个简单的类似示例,展示了我的工作:

class ExampleDelegate<T>(val value: T) {

operator fun getValue(thisRef: Any?, property: KProperty<*>) = value

}

val example by ExampleDelegate(1000) // number larger than 127 (no box cache)

然而,我注意到,引用这个值似乎会在 EVERY 引用上创建一个自动装箱对象 (java.lang.Integer)。因为该值必须每秒可能被引用数百万或次,这会导致我的软件产生大量垃圾;垃圾收集器承受了很大的压力。

有没有办法避免开销?如果不是直接的,是否有任何巧妙的方法来“模拟”高性能的属性委托(delegate)?

enter image description here

提交了有关 YouTrack 的错误报告:https://youtrack.jetbrains.com/issue/KT-13606

最佳答案

bug report 中所述,您的应用程序会生成垃圾,因为您的属性委托(delegate)是通用的,因此需要对值进行装箱。如果您使用原始类型的非泛型属性委托(delegate),则不会发生装箱。

关于properties - Kotlin:如何避免委托(delegate)属性中的自动装箱(垃圾)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39152264/

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