私は2000列とobject.size(my.data)を持つmy.dataという名前のdata.frameを持っています。Rプログラミングでdata.frameの列を削除した後、object.size()が削除され、なぜrsessionは同じメモリを消費しますか?
は約450 MBを返します。
私は(300列の周り)だけのものを維持することにより、不要な列を削除し、私はその後、私は再びobject.size(my.data)をチェックし、それはまだ450メガバイトだ
my.data <- my.data[,vars.keep]
gc()
を必要としています。どのように効率的にメモリを取り戻すことができますか?
さらに詳しい情報を追加したいだけですが、Mauritsは正しいです。不要な列を削除した後、オブジェクトサイズは大幅に減少しましたが、引き続き同じメモリが使用されます。なぜrsessionはメモリを解放しないのですか?
format(object.size(transformed_data), units = "Mb");
[1] "40.5 Mb"
transformed_data <- transformed_data[,vars.keep]
format(object.size(transformed_data), units = "Mb");
[1] "5.3 Mb"
ありがとう、モーリッツ、私にチェックしてみましょう –
こんにちはモーリッツ、そうです。列を除去した後、オブジェクトのサイズは劇的に減少しました。しかし、Windowsリソースマネージャでは、rsession.exeのメモリ使用量は変更されません。それは番号を保持します。だから私はいくつかのメモリをリリースしたいので、これはまだ役に立たない。これは、rsessionがメモリを解放したままにして、後で他のオブジェクトが作成されたときに使用するためですか? –
これはおそらく無関係の問題だと思います。 R自体のメモリ管理はOSに依存します。私はWindowsユーザーではありませんが、Linuxではいくつかのライブラリはメモリをチャンクに割り当て、チャンク全体が空き状態になったらメモリを解放することができます。可能であれば、お使いのOSはメモリを解放します。 Rオブジェクトのサイズ変更前後で 'shell( 'systeminfo | findstr Memory')'を使って、メモリ使用量を監視する価値があります。また、Rが2011年からのリリースのメモリをどのように解放するかについての詳細な議論については、こちら[https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=14611]をご覧ください。 –