0

ruby プログラムを実行するとき、変数は RAM に格納されていると想定します。RAM の不足のためにページングする必要がある場合以外に、ハード ドライブに保存されることはありますか? スタックとヒープが関連していると思いますが、Ruby が変数を格納する場所に関する決定的な情報は見つかりませんでした。

4

3 に答える 3

1

Ruby 言語仕様は、特定のストレージ戦略を義務付けたり禁止したりしません。どの実装でも、任意の方法で好きな場所に値を自由に格納できます。仕様は、Ruby プログラムを実行した結果がどうあるべきかだけを示しており、プログラムがどのように実行されているかは示していません。(他の言語仕様と同様です。)

たとえば、 SmallRubyでは、状況によってはオブジェクトがディスクに格納される場合があります。MagLevの全体的な目的は、ヒープをディスク上の分散クラスターに格納することで、RAM よりも桁違いに大きいヒープを処理できる Ruby 実装を用意することです。

于 2013-11-13T10:33:26.593 に答える
0

この回答は、標準の MRI/YARV Ruby 実装を参照しています。

他のプロセスと同様に、実行中の Ruby プログラムのメモリはオペレーティング システムによって制御されます。他のプロセスがより多くのメモリを必要とする場合、OS はそれを見つけようとします。空き RAM がない場合、OS はハード ドライブ上の別のプロセス (おそらく Ruby プログラム) の RAMを一時的に格納またはページングする必要がある場合があります。プログラムが再び実行される番になったときに、RAM に復元されます。

これは OS によって完全に制御されていることに注意することが重要です。Ruby は、メモリがページングされているかどうかを実際に知ることはできません。

于 2013-11-13T07:55:03.087 に答える