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

Kotlin: Massive amounts of ConsPStack, how can I avoid?

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

更新 (2016-09-05):问题已经 fixed 并且将在 Kotlin 1.0.5 中可用。

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

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