如何避免应用程序创建的大量ConsPStack
?什么时候创建?我的申请:https://github.com/Jire/Abendigo
答案 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反射来访问它。