実行時に特定のインスタンスのサイズを測定する方法はないものか...

Javaでそうゆうコード書けないかなぁと思って調べてみたけど,ダメっぽい.
むーん,Memory Profiler使ってJVMPIかJVMTI経由じゃないと測れないのかぁ.


「○○ってどんくらいメモリ食うの」とわりと良く聞かれることがあったのが動機.(そんなん気にすんなよ〜)と思いつつも,簡単に調べられないかなぁと調べてみたが,簡単じゃなさそう.
#Memory Profiler持ってるから,別に困んないけど.


でも,DBのサイジングする感覚で,APのサイジングの目安はあってもいいよなぁ.そう思うと,知らない事だらけだ.

  • 'byte[256]'ってやったら256バイト確保するんだろうけど,基本型だらスタックを消費するだけか?
  • ObjectOutputStreamでインスタンスのバイト列を取得できたら,それがインスタンスのサイズって言えるのか?*1
  • クラスのファイルサイズがPerm領域の消費サイズなんだろか?んなわきゃないか??

...とかとか.いっぺんくらいJVMの仕様書,読んどいたほうがいいのかも.

Java仮想マシン仕様 (The Java series)

Java仮想マシン仕様 (The Java series)

  • 作者: ティムリンドホルム,フランクイェリン,Tim Lindholm,Frank Yellin,村上雅章
  • 出版社/メーカー: ピアソンエデュケーション
  • 発売日: 2001/05
  • メディア: 単行本
  • 購入: 5人 クリック: 98回
  • この商品を含むブログ (35件) を見る


本を買わないまでも,ここら辺は目を通すようにするかぁ(って毎度,言うだけ).

*1:でもSerializableじゃなきゃダメだし,transientな部分は計測できないよなぁ.