RMIを介して送信するオブジェクトのサイズを測定するにはどうすればよいですか?
-
19-08-2019 - |
質問
アプリケーションのパフォーマンスチューニングを行っていますが、RMIを介して送信するオブジェクトのサイズを測定するための良い方法を知りたいです。
目的は、オブジェクトをよりスリムにすることです。
解決
これを行う最も簡単な方法は、オブジェクトをファイルに書き込むテストコードを挿入することです。次に、ファイルのサイズを確認します。
または、ディスクに書き込みたくない場合(およびオブジェクトがメモリを消費しない場合):
ByteArrayOutputStream bout = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(bout);
oos.writeObject(theObjectIWantTheSizeOf);
oos.close();
System.out.println("The object size is: " + bout.toByteArray().length:
他のヒント
オブジェクトは既にシリアル化可能であるため、ObjectOutputStreamでsize()メソッドを使用してこれを行うことができます。
まず、使用しているRMIプロトコルを確認する必要があります。 EJB 3 を使用している場合、CORBA(RMI-IIOP)を呼び出している可能性があります。パフォーマンスを改善したい場合は、RMI over-Zipped IOP( ZIOP )<!>#8212;を使用できます。帯域幅の使用量を削減するGIOPの圧縮バージョン。 http://docs.jboss.org/jbossremoting/2.5.2を試してください。 SP2 / html_single /
これだけでは十分ではありません。クラスとインスタンスのシリアル化された形式を送信できます。
クラスは一度だけ送信される必要があり、ディスク上のサイズになります。 オブジェクトを送信するのは1回だけですか、それとも何回ですか?後者の場合、クラスのサイズは重要ではありません。
数か月前、この記事計装メモリカウンターを< href = "http://www.javaspecialists.eu/" rel = "nofollow noreferrer"> Javaspecialist サイト、Javaオブジェクトのメモリ使用量の計算について。おそらくあなたに役立つかもしれません。