Gördüğünüz sorun, Matlab sanal belleği kullanmaya başladığında ortaya çıkar. Normalde Matlab sürecini Görev Yöneticisi aracılığıyla öldürebilmelisiniz, ancak bu her zaman arzu edilmez. Maalesef, maksimum dizi boyutunu global olarak sınırlayacak basit Matlab dahili anahtarı yoktur.
Yapabilecekleriniz, takas dosyası boyutunu çok küçük yapmaktır, böylece Matlab gerçekten çok fazla yazamaz, ancak bu da diğer programların performansını etkileyebilir. Matlab dışındaki diğer çözümler ise Linux'a geçmek (bir program için bellek limitlerini daha kolay ayarlayabileceğiniz, setting limits on both Windows and Linux ile ilgili detaylar için @ BenVoigt'ın cevabına bakınız) veya bir sanal makinede her şeyi çalıştırabilecekler.
Gelecekte başvurmak gerekirse, simülasyonlarımda, simülasyon parametrelerinin verildiği tahmin edilen toplam bellek kullanımını hesaplayan ön ayırma işlemimin başlangıcında bir yöntem (alt-işlem, OOP yapmak istemiyorsanız) kullanıyorum (Tüm büyük dizilerin elemanlarının sayısı # 8 için çiftleri kullanacağım, bayt cinsinden bellek) ve çok fazla RAM kullanacak bir hata atıyor.
Hızlı bellek kontrolü için bir örnek. 3 m-3-by-t dizileri ve 5 m-by-t dizileri tahsis edeceğimi biliyorum, hepsi çift.
maxMemFrac = 0.8; %# I want to use at most 80% of the available memory
numElements = 3 * (m * 3 * t) + 5 * (m * t);
numBytesNeeded = numElements * 8; %# I use double
%# read available memory
[~,memStats] = memory;
if numBytesNeeded > memStats.PhysicalMemory.Available * maxMemFrac
error('MYSIM:OUTOFMEMORY','too much memory would be needed')
end
Jonas, teşekkür cevaplar görüyor musunuz? Bunu kullanabiliyorsam, işe yarayabilir bir çözüm olacağını düşünüyorum. Teşekkürler. – Spacey
Linux'a Geçiş? Bildiğimiz kadarıyla, zaten Linux kullanıyor olabilirdi. –
@BenVoigt Windows makinesindeyim, Lunix'e geçmenin benim için uygun olabileceğini düşünmüyorum. – Spacey