Kotlin: Evite crear FqNameUnsafe y FqName

Noté que mi aplicación crea cantidades masivas de instancias FqNameUnsafe y FqName . ¿Cuándo se crean estos? ¿Cómo puedo evitar la creación de estos? (Necesito networkingucir la creación de basura en mi aplicación).

enter image description here

No tengo FqNameUnsafe o FqName en mis proyectos de Kotlin. Solo se incluye en kotlin-reflect ( un file JAR separado ).

Si no tiene que usar kotlin-reflect en su aplicación, no lo incluya en su classpath. En general, Kotlin se comstack a código de byte JVM bastante directo y no creará mucho en gastos generales, si lo hay, y algunas veces realiza Java simple porque puede alinear funciones (puede search "gastos generales" en la Documentación de idioma de Kotlin para get más información). detalles).

Sin embargo, si necesita usar kotlin-reflect, entonces, por lo que puedo ver, no hay opciones para ajustar cómo funciona y tendrá costos típicos de la reflexión (más cualquier cosa específica de la reflexión de Kotlin para la cual no he hecho sido capaz de encontrar cualquier documentation útil).

ACTUALIZACIÓN (2016-09-13): el problema ha sido resuelto y no será reproducible a partir de Kotlin 1.1.

Supongo que esto puede ser algo mejor si llama a KClass#qualifiedName less frecuencia, o almacena en caching sus resultados. La implementación actual de esta propiedad (y otras que trabajan con nombres calificados) no está tan optimizada como debería. De hecho, actualmente no nos centramos en el performance en la implementación de la reflexión, pero es probable que mejore después de Kotlin 1.0.

Mientras tanto, informa este problema (y cualquier otro que encuentres) en youtrack.jetbrains.com si deseas rastrear su estado. ¡Gracias!