08/07/01 21:22:32
特にない
57:デフォルトの名無しさん
08/07/01 22:09:37
プラットフォーム非依存の方法はないな。
Linuxで File.read("/proc/#{$$}/statm").split.first.to_i とかできそうだし、
他の環境でもなんかあるんじゃない?
58:デフォルトの名無しさん
08/07/01 23:20:49
え・・・
自プロセスのサイズを知るのにそんな回りくどい方法をしないといけないんですか?
PHPですら、memory_get_usageで簡単に知ることができるのに・・
59:デフォルトの名無しさん
08/07/01 23:23:12
PHPじゃないから
60:デフォルトの名無しさん
08/07/01 23:37:18
Perlにもなかったよな
なんでPHPにはあるんだろうね
61:デフォルトの名無しさん
08/07/01 23:40:35
Pythonだと
resource.getrusage(resource.RUSAGE_SELF) あたりだなぁ。
62:デフォルトの名無しさん
08/07/01 23:41:24
え、「使用しているメモリ量」って言ったじゃん
63:デフォルトの名無しさん
08/07/01 23:41:42
PHPで言う所の$foo->$bar($baz)はどうすればいいのでしょうか
eval "foo.#{bar}(baz)"とする以外に方法が思い付かなかったのですが
もっと良い方法はありませんか?
64:デフォルトの名無しさん
08/07/01 23:49:24
プロセスのサイズとプロセスが使用しているメモリ量っておなじもの?
65:デフォルトの名無しさん
08/07/01 23:50:56
PHPの文法よーしらんが
$fooが変数、$barがメソッド名、$bazが引数ってことかいな。
foo.__send__(bar, baz)
__send__はsendでもいい
66:デフォルトの名無しさん
08/07/01 23:51:20
s/変数/オブジェクト/
67:デフォルトの名無しさん
08/07/02 00:01:05
perlはCPANからProc::ProcessTableをインストールして
(grep { $_->pid == $$ } @{Proc::ProcessTable->new->table})[0]->size
68:デフォルトの名無しさん
08/07/02 00:11:38
>>65
なるほど、__send__を使うんですね!ありがとう!
>$fooが変数、$barがメソッド名、$bazが引数ってことかいな。
その通りです、舌足らずでごめんなさい><
69:デフォルトの名無しさん
08/07/02 01:11:14
FastCGI+Rubyでwebプログラム作り始めました。
これRubyのプロセスがずっと居座って、foreachで回ってるんですよね。
以前、Rubyはずっと居座っていると使用メモリが肥大化していくということを
どこかで読んだ記憶があるのですが、
こういった問題に対してどのような解決法をとるのが普通なのでしょうか?
70:デフォルトの名無しさん
08/07/02 01:34:15
定期的にプロセスを再起動するのが手っ取り早い。
Rubyで書いたXMLRPCを話すdaemonとか稼動させてたけど、
別にプロセスは肥大化しなかったな。
プログラムの書き方によるんでない。
71:デフォルトの名無しさん
08/07/02 02:29:28
Rubyでは、クラス記述の冒頭で、インスタンス変数の宣言はしないんですか?
使用しているインスタンス変数がわかりやすいので
あった方がいいのではないかとも思うのですが
本に載ってるサンプルには書いてありません
72:デフォルトの名無しさん
08/07/02 02:31:25
クラス記述の冒頭にinitializeを置いてそこで初期化せよ、と
教祖の本に書いてある。
73:デフォルトの名無しさん
08/07/02 02:36:07
確かに、initializeに書いておけばわかりやすいですね
ありがとうございました
74:デフォルトの名無しさん
08/07/02 02:44:12
>>71 に便乗。
私も使い始めですが、確かに一覧性が無いと思いました。
クラスの記述で、インスタンス変数を初期化する処理は、initialize等のメソッド内に書くしか
無いのでしょうか。
75:デフォルトの名無しさん
08/07/02 02:50:30
外部に名前を見せても構わない場合は、
attr_reader :size (外部から読み取り専用の場合)
attr_accessor :name(読み書き両方)
のようなクラスメソッドを使うと、@size、@nameなどのインスタンス変数が
使えるようになり、size, name, name=などのメソッドで参照や設定ができる
ようになる。
完全非公開の属性で、name=とか定義する必要がないなら、どこかのインスタ
ンスメソッド(代表的なのがinitialize)で使うことで定義される。
76:デフォルトの名無しさん
08/07/02 02:55:27
未初期化のインスタンス変数にはnilが入ってるから
@hoge||=1
とかで初期化されてないときだけ初期化することは可能