R işlemlerinin kullanabileceği belleği artırmak (veya azaltmak)


Yanıtlar:


64

Gönderen:

http://gking.harvard.edu/zelig/docs/How_do_I2.html ( ayna )

Windows kullanıcıları, R'nin belleğinin tükendiği hatasını alabilir.

Zaten R yüklediyseniz ve ardından daha fazla RAM taktıysanız, ek kapasiteden yararlanmak için R'yi yeniden yüklemeniz gerekebilir.

Kullanılabilir hafıza miktarını manuel olarak da ayarlayabilirsiniz. R'yi kapatın, ardından R program simgenize (masaüstünüzdeki veya programlar dizininizdeki simge) sağ tıklayın. `` Özellikler '' i ve ardından `` Kısayol '' sekmesini seçin. `` Hedef '' alanını arayın ve R yürütülebilir dosyasının konumu etrafındaki kapanış tırnak işaretlerinden sonra şunu ekleyin:

--max-mem-boyutu = 500M

aşağıdaki şekilde gösterildiği gibi. Bu değeri 2GB'ye veya yüklediğiniz maksimum fiziksel RAM miktarına kadar artırabilirsiniz.

R'nin x uzunluğundaki bir vektörü ayıramadığı hatasını alırsanız, R'yi kapatın ve aşağıdaki satırı `` Hedef '' alanına ekleyin:

--max-VSIZE = 500M

veya uygun şekilde. Her zaman R komut istemine yazarak R'nin ne kadar kullanılabilir bellek olduğunu kontrol edebilirsiniz.

memory.limit()

bu size MB cinsinden kullanılabilir bellek miktarını verir. R önceki sürümlerinde kullanmak gerekli: round(memory.limit()/2^20, 2).


7
32 bit Windows'ta, R'nin ne kadar yüklediğinize bakılmaksızın yalnızca 3Gb RAM kullanabileceğini unutmayın. 64 bit Windows üzerinde çalışır ve mevcut tüm RAM kullanabilirsiniz Revolution Computing, temin R for Windows 64-bit sürümü var: revolution-computing.com/products/revolution-enterprise.php
David Smith

6
Yalnızca iki not: (i) memory.limit () yalnızca Windows'ta çalışır ve (ii) uygun yanıtı döndürecek komut yuvarlaktır (memory.limit (), 2) - en azından benim R sürümümde ( 2.8.1).
medriscoll

31
Linux üzerinde çalışan memory.limit () ile benzer bilgilerin nasıl elde edileceğine dair herhangi bir öneriniz var mı?
exl

5
Web sayfası artık mevcut değil. Görüntüler olmadan bunu takip etmek benim için zor. Örneğin "Kısayol" sekmesi görmüyorum. Ayrıca, maksimum belleği azaltmak için bunu kullanabilir misiniz?
blakeoft

6
Peki ya Mac kullanıcıları? Bununla ilgili bir şey yapabilir miyiz?
Alfredo Lozano

52

Kullanın memory.limit(). Boyutun memory.limit(size=2500)MB cinsinden olduğu bu komutu kullanarak varsayılanı artırabilirsiniz . Bundan gerçek anlamda yararlanmak için 64 bit kullanmanız gerekir.

Diğer bir öneri de, mümkün olan her yerde belleği verimli kullanan nesnelerin kullanılmasıdır: örneğin, veri çerçevesi yerine bir matris kullanın.


3
Bunun nasıl çalıştığını gerçekten anlamıyorum. Bu bellek sınırı sorunuyla karşılaştım ve "Toplam 8182Mb tahsisatına ulaşıldı" hatasını aldım. 8GB ram ile 64-bit kullanıyorum, bu yüzden SOL gibi göründüm. Bununla birlikte, shiggles için memory.limit (size = 50000) ayarladım ... VE İŞTE ÇALIŞTI! Ama neden???
theforestecologist

2
Bunun 7 yaşında olduğunu biliyorum, ancak R tarafından kullanılabilecek RAM miktarını azaltmaya çalışıyorum, ancak değeri düşürmeye çalıştığımda bu mesajı alıyorum (64 bit Windows makinede 12 gb Ram var) . Uyarı mesajı: In memory.limit (4095): hafıza limiti azaltılamıyor: yok sayıldı
cehennem

7

Microsoft Windows, eğer yapılabiliyorsa işlemlerden gelen tüm bellek isteklerini kabul eder.

Sanal Bellek Boyutu dışında, bir işleme sağlanabilecek bellek sınırı yoktur.

Sanal Bellek Boyutu, kaç uygulama çalıştırıyor olursanız olun, herhangi bir işlem için 32 bit sistemlerde 4 GB'dir. Herhangi bir işlem, 32 bit sistemlerde 4 GB'a kadar bellek ayırabilir.

Uygulamada, Windows, işlem isteklerine ve disk belleği dosyası mekanizmasına bağlı olarak, ayrılmış belleğin bazı bölümlerini otomatik olarak RAM'den veya sayfa dosyasından ayırır.

Ancak başka bir sınırlama, disk belleği dosyasının boyutudur. Küçük bir sayfalama dosyanız varsa, büyük anılar ayıramazsınız. Daha fazla bellek alanına sahip olmak için Microsoft'a göre disk belleği dosyasının boyutunu artırabilirsiniz .


5
  1. Daha fazla ram satın alın
  2. 64 bit işletim sistemine geçin. 1. nokta ile birleştirin.

23
Daha fazla ram satın alın (ve diğer işletim sistemlerine geçin) genel olarak uygun bir çözüm değildir.
om-nom-nom

17
Elbette, tıpkı eldeki probleme uygun daha küçük problemler üzerinde çalışmak gibi. Bir çözüm istemek genellikle size de bir çözüm getirmez.
Dirk Eddelbuettel

2

R ayrılan bellek miktarını artırmak için kullanabileceğiniz memory.limit

memory.limit(size = ...)

Veya

memory.size(max = ...)

Argümanlar hakkında

  • boyut - sayısal. NA bellek sınırını bildirirse, aksi takdirde Mb cinsinden yeni bir sınır isteyin. 32 bit R yapılarında yalnızca 4095'e kadar olan değerlere izin verilir, ancak 'Ayrıntılar'a bakın.
  • max - mantıksal. DOĞRU ise, işletim sisteminden elde edilen maksimum bellek miktarı bildirilir, YANLIŞ ise şu anda kullanımda olan miktar, NA ise bellek sınırı.
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.