필터 지우기
필터 지우기

Matlab doesn't free memory

조회 수: 9 (최근 30일)
TheBeginner
TheBeginner 2013년 7월 12일
댓글: Nick 2020년 3월 17일
Hi,
I have a function that creates a quite big array (~ 200 kbytes)in a loop.
At first the function works well, my array is well created, but after a dozen loops, Matlab says i'm out of memory.
I have been checking my memory and it seems between each loop, even though I free all the memory (clear all, clc etc...), Matlab still occupies a significant part of the memory...
I have found some topics discussing that point, and it seems to be "normal", but I didn't find a solution, except from relaunching Matlab, which is not satisfying.
Any idea on how to indeed free the memory?
Thank you
  댓글 수: 1
Jan
Jan 2013년 7월 12일
Avoid the brute clearing by "clear all, clc", although it is obviously a fashion to use it. Reloading the functions from the disk wastes a lot of time afterwards, and the deleteing of all debugger breakpoints is a very bad idea.

댓글을 달려면 로그인하십시오.

답변 (2개)

Ilham Hardy
Ilham Hardy 2013년 7월 12일
  • Is the array uniform in size?
  • Do you preallocate the array first?
  • Create several "checkpoints" in your for loop by saving the workspace to the disk.
  댓글 수: 3
Ilham Hardy
Ilham Hardy 2013년 7월 12일
As far as i understand, as long as you preallocate and use the same name for the array during the for-loop, it will occupies the same memory region during the process.
Hope it helps, IH
Nick
Nick 2020년 3월 17일
I have the same issue.
I am reading in data files, processing and plotting them and repeating with new data files.
Having traced through my code while watching performance manager I see that the memory which doesn't clear is the memory that was used whuilst creating plots inside figures (there are many data points). If I create lots of plots, then the amount of used memory goes up and remains up even after the variables displayed in the plots have been cleared and the figures closed. Eventually matlab is using so much of my PC's 16GB of RAM that it can't find space to load the next data file.
Tried clear all, close all, close all hidden .. to no avail.
The only way to clear that redudant plot data is to shut down matlab and then restart .. bit "$£% really.

댓글을 달려면 로그인하십시오.


Jan
Jan 2013년 7월 12일
편집: Jan 2013년 7월 13일
200kB is not big in the times of 8 GB machines. Therefore a missing pre-allocation seems to be more likely a reason for your problems. Without seeing the relevant part of the code it is not possible to examine this. But such an omitted pre-allocation does not fill the memory with values (because the not longer used memory chunks are freed), but the memory is fragmented such that the OS cannot allocate free contiguous blocks anymore.
As usual installing more RAM and running a 64-Bit version of Matlab and the OS are fundamental and basic strategies to get rid of "out-of-memory" errors.

카테고리

Help CenterFile Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기

태그

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by