Предупреждение об ограничении памяти R vs "невозможно выделить..."

Предупреждает ли память о моем анализе R?

При запуске большого анализа данных script в R я получаю предупреждение:

В '...' достигнуто полное распределение ___Mb: см. справку...

Но мой script продолжается без ошибок, просто предупреждение. С другими наборами данных я получаю сообщение об ошибке:

Ошибка: не может выделить вектор размера ___ Mb:

Я знаю, что ошибка разбивает мой анализ данных, но есть ли что-то не так, просто получая предупреждение? Я не заметил ничего в моем наборе данных, но он очень большой, и у меня нет хороших средств для проверки всего. Я нахожусь в 18000Mb, выделенных для памяти и не могу разумно выделить больше.

Ответ 1

Вернемся в R 2.5.1 новости Я нашел эту ссылку на предупреждения о распределении памяти:

malloc.c обновлен до версии 2.8.3. Эта версия имеет немного другой стратегии распределения, и, вероятно, будет работать немного ближе к границам адресного пространства, но может дать больше предупреждения о достижении общего распределения перед успешным Выделение.

Основываясь на этой заметке, я выдвигаю гипотезу (без каких-либо дополнительных знаний о внутренней реализации), что предупреждение предоставляется, когда вызов распределения памяти в R (malloc.c) не удался, чтобы выделить память. Выполняются множественные попытки выделить память, возможно, используя разные методы и, возможно, с вызовами сборщика мусора. Только когда malloc уверен, что выделение не может быть выполнено, оно вернет ошибку.

Предупреждения не компрометируют существующие объекты R. Они просто информируют пользователя о том, что R приближается к пределам памяти компьютера.

(Я надеюсь, что более осведомленный пользователь может подтвердить это...)