2017-11-02 13 views
2

私はKotlinを新しくしました.AFAICTの構文は、Int、Floatなどのオブジェクトバージョンをサポートしています。対応するint型とfloat型のJavaプリミティブはありません。しかし、可能であれば、コンパイラまたはJVMはプリミティブ型の使用を最適化していますか?私は、JVMがプリミティブ型を使用する代わりにオブジェクトを毎回作成しなければならない場合、ゲームのメインループから呼び出された関数でローカル変数を使用すると、GCの吃音を引き起こす可能性があると懸念しています。KotlinのFloat、IntなどはJVMの組み込み型に最適化されていますか?

答えて

1

docsを引用:

タイプの一部は、特別な内部表現持つことができます - 例えば、数字、文字や真偽値は、実行時にプリミティブ値として表すことができる - しかし、ユーザーに、彼らは普通のように見えますクラス。このセクションでは、Kotlinで使用される基本的な型について説明します。数字、文字、ブール値、配列、文​​字列です。

コンパイラは、実行時にJVM primitive typesが使用されるように最適化します。

null可能な番号参照(例:Int?)が必要な場合やジェネリックが必要な場合を除いて、数字は物理的にJVMプリミティブタイプとして格納されます。後者の場合、数字は囲まれています。

ソースドキュメントにもヒントがあります。 Int

32ビット符号付き整数を表します。 JVMでは、このタイプのnullableではない値は、プリミティブ型intの値として表されます。

関連する問題