From: SASADA Koichi Date: 2010-10-29T02:25:14+09:00 Subject: [ruby-dev:42480] memory profiler for test-all This is a multi-part message in MIME format. --------------060003020607060101000307 Content-Type: text/plain; charset=ISO-2022-JP Content-Transfer-Encoding: 7bit  ささだです。  test-all がメモリを食いすぎるっていうんで、各テスト後にどの程度メモリ を食うのか調べるプロファイラを作ってみました。  これ、コミットしていいですか?  で、test/runner.rb に何らかの指示を与えたら(make test-all で何らかの 指示を与えたら)これを使うようにしてみたいんですが、何か方法はあるでしょ うか。test/unit が OptionParser で引数を解析しちゃうんで、オプションは 渡ってこないんですよね。  環境変数で与えるってのも手だけど。 #  ちなみに、手元でこれを使ってみると、メモリ不足で失敗していた test-all が成功するようになってしまいました。lazy sweep だと、メモリ不足が顕著に なるのかもしれない。lazy sweep の特性からいって、そりゃそうなんですが。 #  fiddle の箇所で SEGV します。ただ、fiddle だけで実行すると SEGV しな い。きちんと調べないと無理っぽいです。ObjectSpace.each_objects 相当をし ているので、誰かが変なオブジェクトを生成している、ってことだと思います。 -- // SASADA Koichi at atdot dot net --------------060003020607060101000307 Content-Type: application/x-ruby; name="memprofile_test_all.rb" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="memprofile_test_all.rb" cmVxdWlyZSAnb2Jqc3BhY2UnDQoNCm1vZHVsZSBUZXN0DQogIG1vZHVsZSBVbml0DQogICAg Y2xhc3MgVGVzdENhc2UNCiAgICAgIGFsaWFzIG9yaWdfcnVuIHJ1bg0KDQogICAgICAkdGVz dF9hbGxfbWVtcHJvZmlsZV9pbyA9IG9wZW4oJ21lbXByb2ZpbGVfdGVzdF9hbGwnLCAndycp DQogICAgICAkdGVzdF9hbGxfbWVtcHJvZmlsZV9nY19zdGF0X2hhc2ggPSB7fQ0KDQogICAg ICBpZiBGaWxlVGVzdC5leGlzdD8oJy9wcm9jL3NlbGYvc3RhdG0nKQ0KICAgICAgICAjIGZv ciBMaW51eCAob25seT8pDQogICAgICAgICR0ZXN0X2FsbF9tZW1wcm9maWxlX2lvLnB1dHMg Im5hbWVcdHRvdGFsX21lbXNpemVfb2ZfYWxsX29iamVjdHNcdCIgKw0KICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoR0Muc3RhdC5rZXlzICsNCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAldyhzaXplIHJlc2lkZW50IHNoYXJlIHRleHQgbGli IGRhdGEgZHQpKS5qb2luKCJcdCIpDQoNCiAgICAgICAgZGVmIG1lbXByb2ZpbGVfdGVzdF9h bGxfcmVzdWx0X3Jlc3VsdA0KICAgICAgICAgICIje3NlbGYuY2xhc3N9XCMje3NlbGYuX19u YW1lX199XHQiIFwNCiAgICAgICAgICAiI3tPYmplY3RTcGFjZS50b3RhbF9tZW1zaXplX29m X2FsbF9vYmplY3RzLnRvX3N9XHQiIFwNCiAgICAgICAgICAiI3tHQy5zdGF0KCR0ZXN0X2Fs bF9tZW1wcm9maWxlX2djX3N0YXRfaGFzaCkudmFsdWVzLmpvaW4oIlx0Iil9XHQiIFwNCiAg ICAgICAgICAiI3tGaWxlLnJlYWQoJy9wcm9jL3NlbGYvc3RhdG0nKS5zcGxpdCgvXHMrLyku am9pbigiXHQiKX0iDQogICAgICAgIGVuZA0KICAgICAgZWxzZQ0KICAgICAgICAkdGVzdF9h bGxfbWVtcHJvZmlsZS5wdXRzICJuYW1lXHR0b3RhbF9tZW1zaXplX29mX2FsbF9vYmplY3Rz XHQiICsgR0Muc3RhdC5rZXlzLmpvaW4oIlx0IikNCiAgICAgICAgZGVmIG1lbXByb2ZpbGVf dGVzdF9hbGxfcmVzdWx0X3Jlc3VsdA0KICAgICAgICAgICIje3NlbGYuY2xhc3N9XCMje3Nl bGYuX19uYW1lX199XHQiIFwNCiAgICAgICAgICAiI3tPYmplY3RTcGFjZS50b3RhbF9tZW1z aXplX29mX2FsbF9vYmplY3RzLnRvX3N9XHQiIFwNCiAgICAgICAgICAiI3tHQy5zdGF0KCR0 ZXN0X2FsbF9tZW1wcm9maWxlX2djX3N0YXRfaGFzaCkudmFsdWVzLmpvaW4oIlx0Iil9Ig0K ICAgICAgICBlbmQNCiAgICAgIGVuZA0KDQogICAgICBkZWYgcnVuIHJ1bm5lcg0KICAgICAg ICByZXN1bHQgPSBzdXBlcg0KICAgICAgICBPYmplY3RTcGFjZS50b3RhbF9tZW1zaXplX29m X2FsbF9vYmplY3RzDQogICAgICAgIHJlc3VsdA0KICAgICAgZW5kDQogICAgZW5kDQogIGVu ZA0KZW5kDQoNCg== --------------060003020607060101000307--