私のクラスの1つに、タイプCharacter
のフィールドがあります。私はchar
よりも優先しました。フィールドが「値なし」で、null
という継ぎ目があるため、この情報を表現する最もクリーンな方法です。Java文字対char:メモリ使用量はどうですか?
しかし、私はこのアプローチのメモリフットプリントについて疑問に思っています。私は何十万ものオブジェクトを扱っていますが、2つのオプションの差はごくわずかです。
私の最初の賭けはchar
が2バイトであるのに対し、Character
はオブジェクトであるため、そのライフサイクルをサポートするためにはるかに多くの時間がかかります。しかし、Integer
、Character
などのボクシングされたプリミティブは普通のクラスではないので(ボクシングとボクシングについて考えてください)、JVMが何らかの最適化をボンネットの下で行うことができるかどうか疑問です。
また、Character
は、他のもののように収集されたゴミ、または別のライフサイクルですか?共有リポジトリからプールされていますか?この標準またはJVM実装に依存していますか?
この問題についてインターネット上で明確な情報が見つかりませんでした。何か情報を教えてもらえますか?
'のために\ 0 '*無価値* CHAR – UmNyobe
確かとして使用することができ、私はこれを知っています。 :)アプリケーションドメインを考えると、〜、#または中国語の文字を使用することもできますが、これはポイント – gd1
ではありません。プリミティブは、文字列にchar配列を使用することを知っているため、 (Javaの配列自体はオブジェクトだが議論の余地のある問題:D) – Freak