2011-02-16 10 views
7

W poprzedniej wersji programu MATLAB (7.6), kiedyś dostać OutOfMemoryErrors że myślałem było trochę denerwujące. Ale od aktualizacji do wersji 7.11, z jakiegoś powodu nie jest już wyrzucanie błędów.MATLAB nie rzuca OutOfMemoryExceptions lub maksymalne błędy zmiennej wielkości

To oznacza, że ​​kiedy przypadkowo starać się zmienną, która jest zbyt duża, powłoka MATLAB spróbuje utworzyć zmienną i zabrać maszynę do zatrzymania.

Naprawdę chciałbym mieć te błędy trafiają, tak, że mogę wyjść z wdziękiem lub debugowania mojego kodu, ale nie mogę znaleźć rozwiązania w dowolnym miejscu.

Prawdopodobnie przydatne szczegóły: Używam OSX 10.5 na maszynie 64-bitowej, z 4 GB pamięci RAM.

W MATLAB 7.6:

$ rand(50000); 
??? Error using ==> rand 
Maximum variable size allowed by the program is exceeded. 

W MATLAB 7.11:

$ rand(50000); 
(hang) 
+0

Dobre pytanie. Hubris zawsze mnie łapie, a ja ostatecznie tworzę ogromne matryce, które powodują awarię matlab. – Tim

+0

7.6 -> 7.11 wydaje się być obniżeniem, a nie uaktualnieniem? – albanx

+0

@albanx: 6-> 11 to aktualizacja. To nie jest 7.1.1 – Jonas

Odpowiedz

2

Między wersji 7.6 i 7.11 w wersji Macintosh MATLAB przełączane z aplikacji 32-bitowych do 64-bitowych aplikacji. Tak więc zamiast wyczerpywania się przestrzeni adresowej MATLAB miażdży.

+0

To wydaje się być najbardziej prawdopodobną odpowiedzią. Nie sądzę, że istnieje sposób sztucznie tłumić ilość przestrzeni adresowej w MATLAB? –

+0

Nie w MATLAB (zwykle ludzie chcą więcej przestrzeni adresowej!) I niestety wygląda na to, że Mac OS X nie obsługuje mechanizmu limit/ulimit, aby ograniczyć dostępną pamięć. – SCFrench

1

Matlab nie powiesić. To tylko przywoływanie, które trwa wiecznie. Spróbuj przypisać dużą tablicę, otwórz Monitor aktywności i zobacz, jak zwiększa się i rośnie "Pamięć wirtualna".

Po zmniejszeniu rozmiaru pliku strony w systemie można uniknąć tego problemu.

Powiązane problemy