Tăng (hoặc giảm) bộ nhớ có sẵn cho các quá trình R


123

Tôi muốn tăng (hoặc giảm) dung lượng bộ nhớ có sẵn cho R. Các phương pháp để đạt được điều này là gì?

Câu trả lời:


64

Từ:

http://gking.harvard.edu/zelig/docs/How_do_I2.html ( gương )

Người dùng Windows có thể gặp lỗi R đã hết bộ nhớ.

Nếu bạn đã cài đặt R rồi và sau đó cài thêm RAM, bạn có thể phải cài đặt lại R để tận dụng dung lượng bổ sung.

Bạn cũng có thể đặt dung lượng bộ nhớ khả dụng theo cách thủ công. Đóng R, sau đó nhấp chuột phải vào biểu tượng chương trình R của bạn (biểu tượng trên màn hình nền hoặc trong thư mục chương trình của bạn). Chọn `` Thuộc tính '', rồi chọn tab `` Lối tắt ''. Tìm trường `` Mục tiêu '' và sau dấu ngoặc kép xung quanh vị trí của bộ điều hành R, hãy thêm

--max-mem-size = 500M

như trong hình bên dưới. Bạn có thể tăng giá trị này lên đến 2GB hoặc dung lượng RAM vật lý tối đa mà bạn đã cài đặt.

Nếu bạn gặp lỗi R không thể phân bổ vectơ có độ dài x, hãy đóng R và thêm dòng sau vào trường `` Mục tiêu '':

--max-vsize = 500M

hoặc khi thích hợp. Bạn luôn có thể kiểm tra xem R còn trống bao nhiêu bộ nhớ bằng cách nhập vào dấu nhắc R

memory.limit()

cung cấp cho bạn dung lượng bộ nhớ khả dụng tính bằng MB. Trong các phiên bản trước của R bạn cần sử dụng: round(memory.limit()/2^20, 2).


7
Lưu ý rằng trên Windows 32-bit, R chỉ có thể sử dụng tối đa 3Gb RAM, bất kể bạn đã cài đặt bao nhiêu. Có một phiên bản 64-bit của R dành cho Windows từ REvolution Computing, chạy trên Windows 64-bit và có thể sử dụng tất cả RAM hiện có: Revolution-computing.com/products/revolution-enterprise.php
David Smith

6
Chỉ có hai lưu ý: (i) memory.limit () chỉ hoạt động trên Windows và (ii) lệnh sẽ trả về câu trả lời thích hợp là vòng (memory.limit (), 2) - ít nhất là trên phiên bản R ( 2.8.1).
medriscoll

31
Bất kỳ gợi ý nào về cách lấy thông tin tương tự như memory.limit () làm việc trên linux?
ví dụ:

5
Trang web không tồn tại nữa. Thật khó để tôi theo dõi điều này mà không có hình ảnh. Tôi không thấy tab "Phím tắt" chẳng hạn. Ngoài ra, bạn có thể sử dụng điều này để giảm bộ nhớ tối đa không?
blakeoft

6
Vậy còn người dùng mac thì sao? Chúng ta có thể làm gì đó về nó không?
Alfredo Lozano,

51

Sử dụng memory.limit(). Bạn có thể tăng giá trị mặc định bằng lệnh này memory.limit(size=2500), với kích thước tính bằng MB. Bạn cần phải sử dụng 64-bit để tận dụng lợi thế của điều này.

Một gợi ý khác là sử dụng các đối tượng hiệu quả về bộ nhớ nếu có thể: ví dụ: sử dụng ma trận thay vì data.frame.


3
Tôi không thực sự hiểu nó hoạt động như thế nào. Tôi gặp phải vấn đề giới hạn bộ nhớ này và nhận được lỗi "Đã đạt đến tổng phân bổ 8182Mb". Tôi đang sử dụng 64-bit với 8GB ram nên dường như tôi là SOL. Tuy nhiên, đối với shiggles, tôi đặt memory.limit (size = 50000) ... VÀ NÓ ĐÃ HOẠT ĐỘNG! Nhưng tại sao???
vật học rừng

2
Tôi biết đây là 7 năm tuổi, nhưng tôi đang cố gắng giảm dung lượng RAM có thể sử dụng của R nhưng bất cứ khi nào tôi cố gắng giảm giá trị, tôi nhận được thông báo này (Tôi có 12 GB Ram trên máy Windows 64 bit) . Cảnh báo thông điệp: Trong memory.limit (4095): không thể giảm giới hạn bộ nhớ: bỏ qua
hellter

7

Microsoft Windows chấp nhận bất kỳ yêu cầu bộ nhớ nào từ các quy trình nếu nó có thể được thực hiện.

Không có giới hạn cho bộ nhớ có thể được cung cấp cho một quá trình, ngoại trừ Kích thước bộ nhớ ảo.

Dung lượng bộ nhớ ảo là 4GB trong hệ thống 32bit cho bất kỳ quy trình nào, bất kể bạn đang chạy bao nhiêu ứng dụng. Bất kỳ quy trình nào cũng có thể cấp phát bộ nhớ lên đến 4GB trong hệ thống 32bit.

Trên thực tế, Windows tự động phân bổ một số phần của bộ nhớ được cấp phát từ RAM hoặc tệp trang tùy thuộc vào yêu cầu quy trình và cơ chế tệp hoán trang.

Nhưng một giới hạn khác là kích thước của tệp hoán trang. Nếu bạn có một tệp phân trang nhỏ, bạn không thể cấp phát các bộ nhớ lớn. Bạn có thể tăng kích thước của tệp hoán trang theo Microsoft để có thêm dung lượng bộ nhớ.


5
  1. Mua thêm ram
  2. Chuyển sang hệ điều hành 64 bit. Kết hợp với điểm 1.

23
Mua thêm ram (và chuyển sang hệ điều hành khác) không phải là giải pháp thích hợp chung.
om-nom-nom

17
Chắc chắn là như vậy, giống như việc giải quyết những vấn đề nhỏ hơn phù hợp với vấn đề đang bàn. Mong muốn một giải pháp thường không giúp bạn có được một giải pháp.
Dirk Eddelbuettel

2

Để tăng dung lượng bộ nhớ được phân bổ cho R, bạn có thể sử dụng memory.limit

memory.limit(size = ...)

Hoặc là

memory.size(max = ...)

Về các đối số

  • kích thước - số. Nếu NA báo giới hạn bộ nhớ, nếu không thì yêu cầu giới hạn mới, tính bằng Mb. Chỉ cho phép các giá trị lên đến 4095 trên các bản dựng R 32-bit, nhưng hãy xem 'Chi tiết'.
  • cực đại - logic. Nếu TRUE lượng bộ nhớ tối đa thu được từ HĐH được báo cáo, nếu FALSE số lượng hiện đang sử dụng, nếu NA giới hạn bộ nhớ.
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.