Memory profiling of MATLAB columns meaning

2020-06-02 06:42发布

问题:

I'm using MATLAB profile to observe memory using the command

profile -memory on
profile clear
% my code
profile report

and i got this table

1- i want to ask about the meaning of Allocated Memory,Freed Memory, SelfMemory, and Peak Memory

2- what is the meaning of negative self memory?

回答1:

After a quick google, it would seem that no-one knows, except perhaps MathWorks and they aren't telling. (I jest, but in truth I found very little information on the subject).

Logically however I would interpret the column names as follows:

Allocated memory = the total amount of memory allocated within the function and any it calls.

Freed memory = the total amount of memory released within the function and any it calls.

Peak Memory = the maximum amount of memory in use at any one time during the execution of the function.

Self Memory = the amount of memory used by the function, but not including any functions it calls.

I would hypothesize that a negative 'Self Memory' would indicate that the function frees more memory than it allocates. This could be that it has ownership of a piece of data passed to it, which it then clears. E.g.:

function A()
  foo = B();
  clear foo
end

function foo = B()
  foo = rand(10000,10000);
end

In the example above, the data is created in the call to B and since Matlab employs a lazy copy memory management, this case works pretty much as pass-by-reference for the return value. So, B allocates the memory, and A frees it.

Indeed, running that code with the profiling method in the question produces the following output, which supports my hypothesis.



标签: matlab memory