Tôi đang chạy một số mô phỏng trên máy có bộ nhớ 16GB. Trước tiên, tôi đã gặp một số lỗi:Vấn đề bộ nhớ R với bộ nhớ.limit()
Error: cannot allocate vector of size 6000.1 Mb (the number might be not accurate)
Sau đó, tôi đã cố gắng để cấp phát bộ nhớ hơn cho R bằng cách sử dụng:
memory.limit(1E10)
Lý do của việc lựa chọn một số lượng lớn như vậy là vì memory.limit
không thể cho phép tôi lựa chọn một số ít hơn hệ thống của tôi tổng bộ nhớ
In memory.size(size) : cannot decrease memory limit: ignored
Sau khi thực hiện điều này, tôi có thể hoàn thành mô phỏng của tôi, nhưng R mất khoảng bộ nhớ 15GB, mà dừng lại của tôi từ làm bất kỳ bài Analy sis.
Tôi đã sử dụng object.size()
để ước tính tổng bộ nhớ được sử dụng của tất cả biến được tạo, chỉ mất khoảng 10GB. Tôi không thể biết được R lấy phần còn lại của bộ nhớ ở đâu. Vì vậy, câu hỏi của tôi là làm thế nào để phân bổ hợp lý bộ nhớ cho R mà không cần nổ máy của tôi? Cảm ơn!
bạn có chắc chắn đã xem xét tất cả các biến hiện có? Liệu 'ls (all = TRUE)' chỉ liệt kê những cái bạn đã tạo ra? Lưu ý rằng ngay cả khi một đối tượng bị xóa, bộ nhớ được sử dụng để lưu trữ đối tượng đó không phải là miễn phí cho đến khi bộ thu gom rác được gọi. R thực hiện việc này định kỳ, nhưng bạn có thể bắt buộc thu thập với 'gc()'. –
Tôi chưa kiểm tra mức sử dụng bộ nhớ cho tất cả bộ nhớ của mình. Nhưng tôi đã sử dụng gc() trong mô phỏng của tôi sau mỗi lần lặp ... –
Nói chung, bạn cần khoảng 3 lần số lượng bộ nhớ mà đối tượng của bạn chiếm. Điều này là do sao chép các đối tượng. –