Feature #1630
closed*_memsize()
Description
=begin
ささだです.
あるオブジェクトがどの程度メモリを食っているのか調べるための体系を作る
のはどうでしょうか.
rb_ary_memsize(), onig_memsize(), rb_str_memsize(), rb_io_memsize(),
st_memsize(), rb_transcoding_memsize(), rb_econv_memsize() を作ってみま
した.
http://www.atdot.net/sp/readonly/qzm8lk
多分,数え間違ってるだろうし,メモリアローケーション,まぁ,死ぬ
(SEGV)することもないだろう,とか.
例えば,こんなふうにすると,ObjectSpace.count_objects のように,T_hoge
ごとのメモリ利用量を調べる ObjectSpace.count_objects_size を作ることが出
来ます.
http://www.atdot.net/sp/readonly/45n8lk
これと,ObjectSpace.count_objects を併用して,1オブジェクトあたりのメ
モリ使用量の平均を出したグラフ:
http://www.atdot.net/fp_store/f.lk88lk/file.g.png
ファイルが偉い大きくなってますね.
このままだと,T_DATA をまともに扱うことが出来ないのですが,この辺を扱
うための仕組みはまた今度提案します.
--
// SASADA Koichi at atdot dot net
=end
Updated by ko1 (Koichi Sasada) over 16 years ago
=begin
SASADA Koichi wrote::
多分,数え間違ってるだろうし,メモリアローケーション,まぁ,死ぬ
(SEGV)することもないだろう,とか.
編集していたら,変な文章を送ってしまいました.
多分,数え間違ってるような気もしますが,まぁ,死ぬ(SEGVする)こともな
いだろう,とか.
でした.¶
// SASADA Koichi at atdot dot net
=end
Updated by matz (Yukihiro Matsumoto) over 16 years ago
=begin
まつもと ゆきひろです
In message "Re: [ruby-dev:38609] [Feature: trunk] *_memsize()"
on Mon, 15 Jun 2009 02:07:29 +0900, SASADA Koichi ko1@atdot.net writes:
| あるオブジェクトがどの程度メモリを食っているのか調べるための体系を作る
|のはどうでしょうか.
強い反対というわけではないのですが、公開APIに入れる以上、
JRubyなど他実装で困難でないことを確認してからにしたいです。
で、その確認にはここで聞いてもダメだろうと思います。
=end
Updated by ko1 (Koichi Sasada) over 16 years ago
=begin
ささだです.
Yukihiro Matsumoto wrote::
| あるオブジェクトがどの程度メモリを食っているのか調べるための体系を作る
|のはどうでしょうか.強い反対というわけではないのですが、公開APIに入れる以上、
JRubyなど他実装で困難でないことを確認してからにしたいです。
で、その確認にはここで聞いてもダメだろうと思います。
この辺の機能は結構実装依存なんで,他の Ruby 処理系のことはあんまり考え
ない方がいいような気がするんですが,どうでしょうか.あと,この機能は
objspace という拡張ライブラリとして提供しようとしています.
たとえば,GC::Profiler なんてのも公開 API な気がしますが,JRuby での実
装って考えてるんでしょうか.ObjectSpace.count_objects もそうかな.
--
// SASADA Koichi at atdot dot net
=end
Updated by matz (Yukihiro Matsumoto) over 16 years ago
=begin
まつもと ゆきひろです
In message "Re: [ruby-dev:38627] Re: [Feature: trunk] *_memsize()"
on Mon, 15 Jun 2009 18:27:37 +0900, SASADA Koichi ko1@atdot.net writes:
| この辺の機能は結構実装依存なんで,他の Ruby 処理系のことはあんまり考え
|ない方がいいような気がするんですが,どうでしょうか.あと,この機能は
|objspace という拡張ライブラリとして提供しようとしています.
いや、実装依存だと明示すればそれはそれでいいんじゃないかとは
思います。
| たとえば,GC::Profiler なんてのも公開 API な気がしますが,JRuby での実
|装って考えてるんでしょうか.ObjectSpace.count_objects もそうかな.
GC::Profilerについてはまだ気づかれてないみたいですね(苦笑。
要するにこれ以上増やしたくないと。
count_objectsはCRuby依存だとドキュメントに書いてありますね。
笹田くんのobjspaceライブラリができればそちらに移動した方がよ
いかもしれません。
=end
Updated by ko1 (Koichi Sasada) over 16 years ago
=begin
Yukihiro Matsumoto wrote::
まつもと ゆきひろです
In message "Re: [ruby-dev:38627] Re: [Feature: trunk] *_memsize()"
on Mon, 15 Jun 2009 18:27:37 +0900, SASADA Koichi ko1@atdot.net writes:| この辺の機能は結構実装依存なんで,他の Ruby 処理系のことはあんまり考え
|ない方がいいような気がするんですが,どうでしょうか.あと,この機能は
|objspace という拡張ライブラリとして提供しようとしています.いや、実装依存だと明示すればそれはそれでいいんじゃないかとは
思います。| たとえば,GC::Profiler なんてのも公開 API な気がしますが,JRuby での実
|装って考えてるんでしょうか.ObjectSpace.count_objects もそうかな.GC::Profilerについてはまだ気づかれてないみたいですね(苦笑。
要するにこれ以上増やしたくないと。count_objectsはCRuby依存だとドキュメントに書いてありますね。
笹田くんのobjspaceライブラリができればそちらに移動した方がよ
いかもしれません。
rb_objspace_walk_heaps() が出来ればすぐにコミット出来るんですが,どう
でしょう.
ちなみに,count_objects を移すのは(gc.c のソースコード的な意味で)綺
麗な気もするんですが,すでに require せずに使えるメソッドなので,1.9.2
から変えるのはどうなのかなぁ,とは思います.
--
// SASADA Koichi at atdot dot net
=end
Updated by yugui (Yuki Sonoda) over 16 years ago
- Status changed from Open to Closed
- Assignee set to ko1 (Koichi Sasada)
=begin
=end