• ベストアンサー

メモリの使用量の把握

お世話になります。 今現在DBからDBのコピーをJavaを用いてやろうとしています。 ADbからBDbにコピーするときに 今現在はADbの全レコードを1レコード分の情報を保持できるクラスをVectorにつめて、 その後Bdbにいっこいっこinsertしている方法をやっております。 ADbのレコード件数が多い場合レコードを保持しているVectorがどの程度メモリを消費しているのかが気になります。 このVectorがどのくらいのメモリを消費しているのかをしるにはどうすればよいでしょうか? そんなことしないでResultset一件ずつやれば?とかいうのはなしで、純粋にObjectが使用しているメモリのサイズが知りたいのです。 以上、よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
noname#30871
noname#30871
回答No.2

 Runtime.getRuntime().freeMemory() で、VM内の現在の空きメモリが取得できます。  しかし、Vectorに詰めるという方法はベストでしょうか。  ArrayListはVectorとほぼ同機能ですが、同期化を行なわないだけ、Vectorよりも高速です。  また、参考URLのようにしてレコード件数をあらかじめ求め、固定長配列にしてしまえば、ArrayListやVectorよりも高速になり、メモリ使用量も少なくなります。 http://www.seckey.net/docs/performance/

参考URL:
http://www.gimlay.org/~javafaq/S135.html
watapen
質問者

お礼

なるほど。 またひとつ勉強になりました。 下の方のアドバイスも合わせてふたつ勉強になりました。 >Vectorに詰めるという方法はベストでしょうか。 そうなんです。 この手のことがよくわからないんです。 自分の実装方法が最善なのかどうか... この手の問題がおきたときに初めて気づくのですが、 経験をつまないとその辺のセンスって磨かれないですよね。 ありがとうございます。

その他の回答 (1)

  • liar_adan
  • ベストアンサー率48% (730/1515)
回答No.1

Vector自体のメモリ消費量を測っても、 レコードの消費するメモリは別なので、正確に測るのは難しいと思います。 RuntimeクラスのfreeMemory()で時々測ると、 概算としてわかるかもしれません。

watapen
質問者

お礼

なるほど。 またひとつ勉強になりました。 いわれてみるとそんな気がしてきました。 ありがとうございます。

関連するQ&A