int と Integer、long と Long、空のクラス インスタンスと long 値を持つクラス インスタンスのパフォーマンスを比較するベンチマークをいくつか行いました。
そして、自分では答えられない質問がいくつかあります。
- 空のクラスまたはオブジェクトのインスタンス化に 28 バイトかかるのはなぜですか?
- Long オブジェクトのインスタンス化には 29 バイト、プリミティブ long は 8 バイトかかるのに、空のクラスとの違いはなぜ 1 バイトしかないのですか? JVM はどのような最適化を行っていますか?
私は MacOS で JDK1.6.0_30 を使用しました。コードは https://github.com/mousator/benchmarks/blob/master/src/sk/emandem/michal/AutoboxingTypeBenchmark.javaで入手できます (プロジェクト全体をチェックアウトできます)。
答えてくれてありがとう!