matlab - MATLAB 列的内存分析含义

标签 matlab memory

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

profile -memory on
profile clear
% my code
profile report

我得到了这张 table enter image description here

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 释放它。

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

profile report

关于matlab - MATLAB 列的内存分析含义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21997579/

相关文章:

c - 声明还是定义?

c++ - 交换内存块

matlab - 用matlab画谢尔宾斯基三角形的高效代码

matlab 字符数组到元胞数组

matlab - 从函数句柄获取文档

linux - Linux有页面文件吗?

java - 内存与性能,哪个最好?

c - C 中的 Matlab 引擎函数返回零

algorithm - 具有非均匀网格的matlab中的双积分

c++ - 为什么我们将使用 "new"关键字创建的内存称为 "dynamic memory"因为它也是固定内存