私はthisの記事を読んでいます。私の懸念はautoload
対require
の利点です。記事を読んで、私が集めているのは、マルチスレッドサーバーにautoload
を使用すると、1つのスレッドがまだメモリにないオブジェクトをロードしようとする可能性があるためです。マルチプロセスフォークサーバーでRuby 2で '自動ロード'するのが望ましいですか?
この記事では、マルチプロセスサーバーはどうですか?それらのオートロードは良いですか?そしてそれはそれが依存していると言います。サーバーがPhusion Passengedのようなfork(リクエストごとに新しいプロセスを生成する)を使用していて、Ruby 2を使用している場合、自動ロードは有益ではありません。
理由は、Ruby 2がコピーオンライトのセマンティクスを使用しているからです。つまり、require
をautoload
よりも使用する方が良いことを意味します。コピーオンライトのセマンティクスでは、起動時にFoo::Bar
をロードすると、すべてのプロセス間で1つのコピーがFoo::Bar
になります。したがって、大きなメモリフットプリントはありません。
しかし、Ruby 2を使用せず、forkを使用するマルチプロセスサーバーを使用していない場合、各プロセスはFoo::Bar
という独自のコピーをロードし、メモリ使用量が増加する可能性があります。従って、その場合にはautoload
はrequire
であることが好ましい。
私の記事の解釈は正しいですか?