我正在使用 MATLAB 配置文件来使用命令观察内存
profile -memory on
profile clear
% my code
profile report
我得到了这张 table
1-我想问一下 分配内存、释放内存、SelfMemory 和峰值内存
2-消极的 self 内存是什么意思?
最佳答案
在快速谷歌之后,似乎没有人知道,除了 MathWorks 并且他们没有告诉。 (我开玩笑的,但事实上我发现的关于这个主题的信息很少)。
从逻辑上讲,我将列名解释如下:
分配的内存 = 函数内分配的内存总量以及它调用的任何内存量。
释放的内存 = 函数内释放的内存总量以及它调用的任何内存量。
Peak Memory = 函数执行期间任何时候使用的最大内存量。
Self Memory = 函数使用的内存量,但不包括它调用的任何函数。
我假设负的“自内存”表示该函数释放的内存多于分配的内存。这可能是它拥有传递给它的一段数据的所有权,然后它会清除这些数据。例如:
function A()
foo = B();
clear foo
end
function foo = B()
foo = rand(10000,10000);
end
在上面的例子中,数据是在对 B
的调用中创建的,并且由于 Matlab 采用了惰性复制内存管理,这种情况几乎可以作为返回值的传递引用。所以,B
分配内存,A
释放它。
确实,使用问题中的分析方法运行该代码会产生以下输出,这支持我的假设。
关于matlab - MATLAB 列的内存分析含义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21997579/