2011-01-21 20 views
10

Su macchine Windows, gli utenti di MATLAB possono utilizzare i comandi memory oi comandi feature memstats. Tuttavia, nessuno di questi lavori su una macchina, non riuscendo come segue:matlab "memoria" funzione su mac?

 
>> memory 
??? Error using ==> memory 
Function MEMORY is not available on this platform. 

>> feature memstats 
??? Error using ==> feature 
An unknown feature was specified 

Qualcuno sa di un modo per accedere alle informazioni sull'uso della memoria in-MATLAB su un Mac?

+0

Vedere anche questa domanda: http://stackoverflow.com/questions/5932598. – texnic

risposta

5

Non è stato possibile trovare un comando che riproduca la funzionalità di memory. Tuttavia, se si conosce la quantità di memoria totale del sistema, è possibile utilizzare who (o vsize dallo scambio di file per ulteriori dettagli) per stimare la quantità di memoria attualmente utilizzata dalle variabili e quindi la quantità di spazio disponibile.

Tra l'altro, si può sempre venuti a conoscenza della memoria Java chiamando

java.lang.Runtime.getRuntime.maxMemory 
java.lang.Runtime.getRuntime.totalMemory 
java.lang.Runtime.getRuntime.freeMemory 

Nota che la memoria Matlab e la memoria Java sono diversi - la memoria Java è utilizzato per l'interfaccia utente, tra cui figure, così come altri java oggetti, mentre memory segnala la memoria disponibile per variabili e calcoli.

+0

Sfortunatamente, né questa risposta né quella di @philippe mi permettono di vedere quanto viene assegnato a MATLAB, quanto viene utilizzato dal motore MATLAB, o di assicurare che la memoria sia contigua, tutti fattori ([link] (http://www.mathworks.com/support/tech-notes/1100/1106.html)). Tuttavia, questa è una buona soluzione. – eykanal

+0

@eykanal: I sistemi linux hanno tradizionalmente una migliore gestione della memoria (anche se Windows sembra essere migliorato molto recentemente), quindi la dimensione del blocco più grande era principalmente un problema in Windows. Tuttavia, il vero problema di IMHO con non conoscere la quantità di memoria su un Mac è stato che non si sa quando si avvia il paging. – Jonas

+0

Bene, questo, e che Matlab apparentemente utilizza solo [un sottoinsieme di memoria disponibile] (http://www.mathworks.com/support/tech-notes/1100/1107.html), a seconda che si tratti di un 32- o Architettura a 64 bit. Ho a che fare con insiemi di dati molto grandi in modo tale da fare una differenza significativa. – eykanal

1

memory è disponibile solo su sistemi Windows.

Puoi provare a utilizzare il comando Mac incorporato top.

1

So che questa domanda è vecchio e già risposto, ma per chiunque altro alla ricerca di questa risposta, un'alternativa che funziona su tutte le piattaforme in modo da utilizzare whos:

allvars = whos; 
memused = sum([allvars.bytes]); 

Questo presuppone che abbiate unico essere uno spazio di lavoro usato dal tuo script/funzione. Se si dispone di uno script che utilizza più spazi di lavoro, è necessario specificare tutti i diversi spazi di lavoro e aggiungerli.