Kotlin:大量的ConsPStack,我该如何避免?

时间:2015-12-11 00:31:43

标签: performance reflection collections kotlin garbage

如何避免应用程序创建的大量ConsPStack?什么时候创建?我的申请:https://github.com/Jire/Abendigo

enter image description here

1 个答案:

答案 0 :(得分:3)

更新(2016-09-05):问题已经fixed,并将在Kotlin 1.0.5中提供。

Kotlin反射实现正在使用pcollections来缓存不同类的KClass个实例。大量的ConsPStack实例可能意味着您在许多不同的类上使用反射。正如我在另一个答案中提到的那样,反射实现根本没有优化,因此目前有些问题在预料之中。

如果这个问题对您来说非常重要,我建议尽可能使用Java反射来减少KClass创建。此外,作为一种极端的解决方案,您可以尝试在特定时刻清除所述缓存的内容。这是corresponding code in Kotlin project。由于缓存(var K_CLASS_CACHE)是私有的,因此您需要使用Java反射来访问它。