MATLAB列的内存分析意义

Sar*_* S. 13 memory matlab

我正在使用MATLAB配置文件来使用该命令观察内存

profile -memory on
profile clear
% my code
profile report
Run Code Online (Sandbox Code Playgroud)

我得到了这张桌子 在此输入图像描述

1-我想询问Allocated Memory,Freed Memory,SelfMemory和Peak Memory的含义

2-负面自我记忆的含义是什么?

Ala*_*lan 19

快速谷歌之后,似乎没有人知道,除了MathWorks,他们并没有说明.(我开玩笑,但实际上我发现关于这个主题的信息很少).

但从逻辑上讲,我会将列名解释如下:

分配的内存=在函数内分配的内存总量及其调用的内存量.

释放内存=函数内释放的内存总量及其调用的内存量.

峰值内存=在执行功能期间任何时候使用的最大内存量.

Self Memory =函数使用的内存量,但不包括它调用的任何函数.

我假设负面的"自我记忆"会表明该函数释放的内存多于分配的内存.这可能是它拥有传递给它的一段数据,然后它就会被清除.例如:

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

function foo = B()
  foo = rand(10000,10000);
end
Run Code Online (Sandbox Code Playgroud)

在上面的示例中,数据是在调用中创建的,B并且由于Matlab采用了惰性副本内存管理,因此这种情况非常适用于返回值的传递引用.因此,B分配内存,并A释放它.

实际上,使用问题中的分析方法运行该代码会产生以下输出,这支持了我的假设.

档案报告