2

R について多くのメモリに関する質問があることは知っていますが、オブジェクトのスペースを見つけることができる場合とできない場合があるのはなぜですか。たとえば、15 GB メモリの対話型ノードで、Linux で 64 ビット R を実行しています。私のワークスペースはほとんど空です:

 dat <- lsos()
 dat$PrettySize
[1] "87.5 Kb"  "61.8 Kb"  "18.4 Kb"  "9.1 Kb"   "1.8 Kb"   "1.4 Kb"   "48 bytes"

目的のディレクトリに CD を作成した後、初めて R をロードすると、Rdata を正常にロードできます。しかし、時々それをリロードする必要があり、通常は次のようになります。

> load("PATH/matrix.RData")
Error: cannot allocate vector of size 2.9 Gb

一度ロードできて、十分な (連続していると思います) スペースがある場合、何が起こっているのでしょうか? 明らかな何かが欠けていますか?

4

1 に答える 1

1

基本的な答えは、メモリ割り当て関数は、オブジェクト (永続的および一時的) の構築のために連続したメモリを見つける必要があり、他のプロセス (R プロセスなど) が使用可能なスペースを断片化した可能性があるということです。R は、ロード プロセスが完了するまで、上書きされているオブジェクトを削除しません。そのため、古いデータの上に新しいデータを配置していると思われる場合でも、そうではありません。

于 2013-09-06T16:15:17.700 に答える