2014-10-22 81 views
5

我一直在寻找一种方法来监视matlab的内存消耗,但一直无法这样做。我感兴趣的是内置函数的峰值内存,无法用matlab分析器测量,因为这些函数已经编译完成。在matlab中监视内存

峰值内存问题很少记载在MATLAB中,这意味着,找出问题是什么我需要监视内存的使用情况自己。我已经尝试在Windows中使用资源管理器,但是我发现有问题。我可以说没有问题,但也可能意味着采样率很低。我使用Windows 7

这个问题可能不会只涉及MATLAB,但因为我在MATLAB的问题,我将标记它如此。

+0

Matlab的['memory'](http://es.mathworks.com/help/matlab/ref/memory.html)函数呢? – 2014-10-22 11:34:52

+0

@LuisMendo我还没有尝试过,但不知何故,我怀疑它会起作用。问题是我希望能够动态地测量(并且如果可能的话)记录内存,以便例如在matlab中编译内置函数中找出峰值内存。假设你出于某种原因想要找​​到矢量的任何两个元素的最小乘积。这可以例如在矩阵乘法(v * v。')的帮助下解决,其中v是[Nx1]。但是,即使输入和输出适中,这也会产生潜在的巨大峰值内存。如果功能是内置的,我无法使用Profiler – patrik 2014-10-22 13:14:19

+0

查看此内容您说得对。当运算(矩阵乘法)运行时,您将不得不发出“内存”。也许'定时器'可以用来定期调用'内存'?如果时间足够短,那么这样的呼叫可能会中断您在中间的操作 – 2014-10-22 13:45:46

回答

4

有Matlab的文件交换,监控Matlab的内存使用量随着时间的推移nice script。它基本上以指定的时间间隔在后台更新数字。 (因为它依赖于Matlab的memory函数,所以不幸的是只能在Windows系统上工作。)

我不知道这是否适合您的需求,但由于memory测量Matlab过程使用的总内存,所以也应该包括内置函数。

然而,当Matlab是在重负载下,其他功能可能需要执行的偏好,并根据需要在数字可能不会得到更新。在这种情况下,我们应该考虑使用诸如例如perfmonProcess Explorer,参见this question以获得更详细的论述。

+0

Perfmon似乎每秒都会更新一次。这可以修复吗?另外,可以更快处理浏览器更新? – patrik 2014-10-23 07:37:39

+0

我最近没有使用过这些工具 - 大部分时间我都在使用Linux和OS X--所以我不知道。但是,如果您的峰值内存分配发生在如此短的时间范围内,即使使用非常小的刷新间隔,您甚至可能无法在监视器程序中看到它,如果它运行在相同的内核上,以确保它运行在不同的核心上。 – pederpansen 2014-10-23 08:04:34