私は最近、C++とJavaの "最良の"シリアライゼーションフレームワークを見つけようとしているベンチマークを実行しています。私にとって「最高」を構成する要素は、de/serializeのスピードと直列化されたオブジェクトの結果のサイズです( )。シリアライゼーション - C++とJavaの違い
Javaのさまざまなフレームワークの結果を見ると、結果のバイト[]は一般にメモリのオブジェクトサイズよりも小さいことがわかります。これは、組み込みのJavaのシリアル化の場合でもそうです。他の製品(protobufなど)のいくつかを見ると、サイズはさらに小さくなります。
私はC++サイズ(boost、protobuf)のものを見ると、結果オブジェクトが元のオブジェクトよりも一般に小さくない(場合によっては大きくなる)ことに驚いていました。
ここに何か不足していますか? C++ではなく、Javaで空き領域を「圧縮」するのはなぜですか? Javaでオブジェクトのサイズを測定するための
n.bは、私は計装http://docs.oracle.com/javase/6/docs/api/java/lang/instrument/Instrumentation.html
long getObjectSize(Object objectToSize) 指定されたオブジェクトが消費するストレージの量の実装固有の近似値を返します。結果には、オブジェクトのオーバーヘッドの一部またはすべてが含まれている可能性があるため、実装内での比較には役立ちますが、実装間の比較には役立ちません。 JVMの1回の呼び出し中に見積もりが変更されることがあります。 – user2384396