Как я могу избежать огромного количества ConsPStack
, созданных моим приложением? Когда они созданы? Мое приложение: https://github.com/Jire/Abendigo
UPDATE (2016-09-05): проблема исправлена и будет доступна в Kotlin 1.0.5.
Реализация отражения Kotlin использует pcollections для кэширования экземпляров KClass
для разных классов. Большое количество экземпляров ConsPStack
вероятно, означает, что вы используете отражение во многих разных классах. Как я уже упоминал в другом ответе, реализация отражения вообще не оптимизирована, поэтому на данный момент несколько ожидаются такие вопросы.
Если эта проблема действительно важна для вас, я бы рекомендовал сократить создание KClass
, используя, по возможности, отражение Java. Кроме того, в качестве экстремального решения вы можете попробовать очистить содержимое описанного кеша в определенный момент. Вот соответствующий код в проекте Котлин . Поскольку кеш ( var K_CLASS_CACHE
) является конфиденциальным, вам нужно будет использовать отражение Java, чтобы получить к нему доступ.