2014-01-15 26 views
3

我有一個MATLAB腳本,它可以在非常大的3D矩陣(例如50,000 x 300 x 100)中進行復雜的轉換和計算。腳本運行時,我無法在計算機上執行其他任何操作,因爲腳本內存密集,這很好;但是爲什麼在腳本運行完畢後,計算機仍然很慢,變量不再在工作區中?我認爲這一定與內存在MATLAB腳本中的分配方式有關。爲什麼我的電腦運行內存密集型MATLAB腳本後運行緩慢

[我正在運行的Mac OSX 10.7和MATLAB 7.13]

+3

可能是因爲所有其他操作都在腳本運行時換出到磁盤,並且必須交換回RAM中。檢查您的硬盤驅動器活動。 –

+0

有沒有辦法將慢度降至最低?如果一切都被換回到RAM中,那麼這是否需要半小時?沒有那麼多的後臺應用程序正在運行 – user2524828

+0

我會建議在腳本完成後關閉並重新打開MATLAB。 – am304

回答

1

你是對的,這是由於內存分配。 Matlab在需要時請求內存,但保持此內存直到它關閉。 你應該注意到,一旦你關閉了Matlab,你的系統就開始工作了。 不幸的是,似乎沒有辦法阻止matlab將內存返回給系統。

+2

Matlab's'pack'命令可用於恢復分配但不可用的內存空間。 'pack'的文檔指出:'pack函數不會影響分配給MATLAB進程的內存量。你必須退出MATLAB來釋放這個內存。' – Max