web-dev-qa-db-ja.com

Rセッションによって割り当てられたメモリをクリアします(gc()は役に立ちません!)

私は機械学習を大規模に行っていますが、Rメモリの占有のために計算が非常に遅くなっています。
オブジェクトをクリアし、gc()と結果を試しました:

           used  (Mb) gc trigger   (Mb)  max used   (Mb)
Ncells  4460452 231.5   15288838 1116.6  36599071 1954.7
Vcells 29572776 349.4  324509788 2712.9 350796378 3376.4

タスクマネージャーに、メモリの3 GBを超えるRセッションがまだ割り当てられていることが示され、コンピューターの速度が依然として遅い。
Rが取得したメモリを解放するにはどうすればよいですか? (PCを再起動したくない)

18
Cina

私が見つけた最良の解決策は、Rセッションを再起動することです。 Rスタジオでctr+shft+f10

ワークスペースを保存したくない場合

makeActiveBinding("refresh", function() { system(paste0(R.home(),"/bin/i386/R")); q("no") }, .GlobalEnv)

paste0(R.home(),"/bin/i386/R --no-save") #--save will save workspace

乾杯。

12
Cina

2つの手順に従う必要があります。最初にrm(list = ls())を実行しますが、ls()内のすべてのオブジェクトを削除しますが、.rs.restartR()を使用してRを再起動する必要があります

これにより、メモリが事実上完全にクリアされます。

4
Prabhu Shankar

この答えのように- https://stackoverflow.com/a/8813862/2602477 -「gcはまだ使用している変数を削除しません。にアクセスできます」。

rm関数を使用して、作業環境の(ほぼ)すべてを削除できます。

rm(list = ls())

非表示のオブジェクトも削除する場合は、使用する必要があることに注意してください

rm(list = ls(all.names = TRUE))
0
Jot eN