Intereting Posts
Как преобразовать цифру Char (0-9) в числовое значение? Объект Kotlin vs companion-object vs package методы динамически созданный текст, как сделать findViewByTag в kotlin, он показывает неразрешенные ссылки Именование условия if-value для использования в if block Как я могу создать «статический» метод для перечисления в Котильне? Различные целевые позиции при использовании разных размеров вида с помощью ObjectAnimator Поделитесь модулем Kotlin с проектом Android и Desktop Тип общего типа Kotlin, Ошибка ввода типа искать все разделы и выживать автоматическое перебалансирование потребителей Kafka Вызывающая (базовая) делегированная функция при использовании делегирования класса из переопределения Kotlin, как объявить скованные поля с одинаковым типом данных Как лучше подождать, пока актер не остановится в kotlinx.coroutines 0.20? Котлин, Прогуард и лямбда Как я могу превратить KFunction без экземпляра param в KFunction с ним? Как перечислить аннотации полей в Котлине?

Являются ли оптимизаторы Kotlin Float, Int и т. Д. Для встроенных типов в JVM?

Я новичок в Kotlin, и AFAICT его синтаксис поддерживает только объектные версии Int, Float и т. Д. Без соответствующих int и float-примитивов Java. Но оптимизирует ли компилятор или JVM использовать примитивные типы, если это возможно? Я обеспокоен тем, что если я использую локальные переменные в функции, вызванной из основного цикла игры, это может привести к заиканию GC, если JVM должен каждый раз создавать объект, а не использовать примитивный тип.

Solutions Collecting From Web of "Являются ли оптимизаторы Kotlin Float, Int и т. Д. Для встроенных типов в JVM?"

Цитирование документов :

Некоторые типы могут иметь специальное внутреннее представление – например, числа, символы и логические значения могут быть представлены как примитивные значения во время выполнения, но для пользователя они выглядят как обычные классы. В этом разделе мы описываем основные типы, используемые в Kotlin: числа, символы, булевы, массивы и строки.

Так что да, компилятор оптимизирует так, что примитивные типы JVM используются во время выполнения. Конечно, есть определенные исключения:

На платформе Java номера физически хранятся как примитивные типы JVM, если только нам не нужна ссылка с номером NULL (например, Int?) Или дженерики. В последнем случае номера в коробке.

В исходной документации есть также намек, например Int :

Представляет 32-разрядное целое число со знаком. В JVM значения, не связанные с нулевым значением этого типа, представлены как значения примитивного типа int.