Являются ли оптимизаторы 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.