1. ホーム
  2. r

[解決済み] gc()とrm()の違いは何ですか?

2023-06-07 20:17:03

質問

Rで定期的にメモリのクリーニングを行っているのですが、その際に rm(list=ls()) .

ガベージコレクタを呼び出す必要があるか gc() を呼び出す必要がありますか?

この2つの関数の違いは何ですか?また gc() を呼び出すか rm() を特定の変数に対して呼び出すのですか?

どのように解決するのですか?

まず、この2つが大きく異なる点として gc 任意の 変数が削除されるわけではありません。 rm() を使って削除されたもの、あるいは関数内で作成され、その後返されたものなど)。実行 gc() を実行しても、決して変数を失うことはありません。

を呼び出すべきかどうかという問題は gc() を呼んだ後に rm() は良いものですが。その ドキュメント には、gc の有用な注記があります。

gc を呼び出すと、ガベージコレクションが行われます。これもユーザーの介入なしに自動的に行われます。gcを呼び出す主な目的は、メモリ使用量のレポートのためです。

しかし、大きなオブジェクトが削除された後に gc を呼び出すと、R がオペレーティングシステムにメモリを返すように促すことができるため、有用である場合があります。

ということで、答えは gc() (を呼び出すのは良いことであり、少なくとも損はしない、ということです。