文档

内存

显示内存信息

语法

内存
Userview =内存
[userview,systemview] =内存

限制

  • 内存该功能仅在微软上可用®窗户®系统。结果取决于计算机硬件和计算机负载。

描述

内存显示信息,显示有多少内存可用和MATLAB®软件目前正在使用。在您的计算机屏幕上显示的信息包括以下项目,每个项目在下面的部分中进行描述:

Userview =内存返回结构中内存使用的用户相关信息userview.返回的信息userview包括以下项目,每个项目将在下一节中描述:

[userview,systemview] =内存返回结构中内存使用的用户和系统相关信息userview而且systemview,分别。的userview结构在上面的命令语法中描述。返回的信息systemview包括以下项目,每个项目将在下一节中描述:

输出参数

方法所显示或返回的值内存函数。

最大可能阵列

最大可能数组是最大的连续空闲内存块的大小。因此,它是MATLAB此时可以创建的最大单个数组的上界。

MATLAB从以下两个值中较小的值导出此数:

  • 在MATLAB虚拟地址空间中发现的最大的连续内存块

  • 总可用系统内存

要查看这个数字代表多少个数组元素,请除以数组类中的字节数。例如,对于a数组,除以8。MATLAB可以创建的元素的实际数量总是小于这个数字。

当你进入内存命令而不分配输出,MATLAB在命令窗口中显示此信息。当您分配输出时,MATLAB将在结构字段中返回信息。见下表。

命令 中返回
内存 标记的字符向量最大可能数组:
用户=内存 结构域用户。MaxPossibleArrayBytes

所有值都是双精度的,以字节为单位。

脚注

当你进入内存命令而不指定任何输出,MATLAB也可以在64位系统上显示以下脚注之一:

有限的系统内存(物理+交换文件)可用。

系统内存不足,无法在MATLAB进程的最大可用块中映射所有虚拟地址。

所有数组可用内存

可用于所有数组的内存是用于保存数据的内存总量。可用的内存量保证至少和这个字段一样大。

MATLAB从以下两个值中较小的值导出此数:

  • 总可用的MATLAB虚拟地址空间

  • 总可用系统内存

当你进入内存命令而不分配输出,MATLAB在命令窗口中显示此信息。当您分配输出时,MATLAB将在结构字段中返回信息。见下表。

命令 中返回
内存 标记的字符向量所有数组可用内存:
用户=内存 结构域用户。MemAvailableAllArrays

脚注

当你进入内存命令不指定任何输出,MATLAB也可以在64位系统上显示以下脚注:

有限的系统内存(物理+交换文件)可用。

系统内存不足,无法在MATLAB进程中映射所有可用虚拟地址。

占用的内存MATLAB

MATLAB使用的内存是为MATLAB进程预留的系统内存总量。它是物理内存和潜在交换文件使用的总和。

当你进入内存命令而不分配输出,MATLAB在命令窗口中显示此信息。当您分配输出时,MATLAB将在结构字段中返回信息。见下表。

命令 中返回
内存 标记的字符向量MATLAB使用的内存:
用户=内存 结构域用户。MemUsedMATLAB

物理内存(RAM)

物理内存是运行MATLAB的计算机上可用的物理内存(RAM)的总量。

当你进入内存命令不分配输出,MATLAB在命令窗口中显示总内存。当您分配输出时,MATLAB将返回结构字段中的可用内存和总内存。见下表。

命令 价值 中返回
内存 总内存 标记的字符向量物理内存(RAM):
[user,sys] =内存 可用内存 结构域sys.PhysicalMemory.Available
总内存 结构域sys.PhysicalMemory.Total

可用物理内存与可用在Windows任务管理器中找到:性能/物理内存,总的物理内存为总计

您可以使用可用的物理内存量来衡量您可以快速访问多少数据。

虚拟地址空间

虚拟地址空间是MATLAB进程可用的虚拟内存总量。MATLAB在返回结构的两个字段中返回信息:可用而且总计

命令 返回值 结构域返回
[user,sys] =内存 可用内存 sys.VirtualAddressSpace.Available
总内存 sys.VirtualAddressSpace.Total

您可以监控差异:

VirtualAddressSpace。总计- VirtualAddressSpace.Available

作为Windows性能监视器(例如,Windows 7控制面板/管理工具/性能监视器)中的虚拟字节计数器。如果添加计数器,则虚拟字节计数器在过程菜单。选择计数器,然后从MATLAB中选择所选对象的实例窗格。

系统内存

系统内存是计算机系统上可用的系统内存的数量。这个数字包括运行MATLAB的计算机上可用的物理内存量和可用的交换文件空间量。中返回的信息SystemMemory返回结构的字段。

命令 返回值 结构域返回
[user,sys] =内存 可用内存 sys。SystemMemory

这和区别是一样的:

Limit -总数(字节)

可以在Windows任务管理器:性能/提交费用中找到。

例子

显示64位Windows系统的内存统计信息:

内存
最大可能阵列:14253 MB (1.495e+10字节)*所有阵列可用内存:14253 MB (1.495e+10字节)* MATLAB使用的内存:747 MB (7.833e+08字节)物理内存(RAM): 12279 MB (1.288e+10字节)*受系统内存(物理+交换文件)限制。

返回结构userview,关于MATLAB此时可以创建的最大数组的信息,有多少内存可用来保存数据,以及MATLAB进程当前正在使用的内存量:

Userview =内存
userview = MaxPossibleArrayBytes: 1.4957e+10 MemAvailableAllArrays: 1.4957e+10 MemUsedMATLAB: 784044032

将输出分配给两个结构,用户而且sys,以取得下列资料:

[user,sys] =内存;MATLAB可以创建的最大数组用户。MaxPossibleArrayBytes
Ans = 1.4956e+10
%——数据可用内存——用户。MemAvailableAllArrays
Ans = 1.4956e+10
%——MATLAB进程使用的内存——用户。MemUsedMATLAB
Ans = 784039936
用于MATLAB进程的虚拟内存sys。VirtualAddressSpace
ans =有效:8.7910e+12总:8.7961e+12
%——物理内存和分页文件——sys。SystemMemory
ans =有效:1.4956e+10
计算机的物理内存sys。PhysicalMemory
ans =可用:2.7093e+09总:1.2876e+10

提示

内存使用的详细信息MATLAB

MATLAB通过遍历MATLAB进程内存结构并将在内存或磁盘分页文件中分配物理存储的所有部分求和来计算MATLAB使用的内存的值。

使用Windows任务管理器,你有MATLAB.exe映像:

Mem Usage < MemUsedMATLAB < Mem Usage + VM Size(单位:bytes)

当下列两个条件都成立时:

  • “内存使用”以千字节为单位的工作集大小。

  • 虚拟机大小页文件使用情况,或私有字节,单位为千字节。

工作集大小是MATLAB虚拟地址空间的一部分目前驻留在RAM中,可以在没有内存页故障的情况下引用。页面文件使用情况给出了需要备份的MATLAB虚拟地址空间的一部分,而该部分不存在。页面文件使用率的另一个名称是私有字节.它包括所有MATLAB变量和工作空间。由于页面文件中的一些页面也可能是工作集的一部分,因此这个总和被高估了MemUseMATLAB.注意,MATLAB进程空间中有些虚拟页面已经有备份。例如,从exe、dll和内存映射文件加载的代码。如果内建内存被调用时,这些文件的任何部分都在内存中,该内存将被计算为MemUsedMATLAB

保留地址

保留地址是进程虚拟地址空间中预留的地址,以供将来使用。这些保留地址减少的大小MemAvailableAllArrays并可减小当前或未来的大小值MaxPossibleArrayBytes

例1 -Java虚拟机(JVM

在MATLAB启动时,部分MATLAB虚拟地址空间由Java保留®虚拟机(JVM™),不能用于存储MATLAB数组。

例2 -标准窗户堆管理器

默认情况下,MATLAB使用标准的Windows堆管理器,除了一组预先选择的小分配大小。这个堆管理器的一个特征是,它的行为取决于请求的分配是大于还是小于固定的524,280字节。例如,如果创建一个MATLAB数组序列,每个数组都小于524,280字节,然后将它们全部清除,则MemUsedMATLAB数值前后变化不大,且MemAvailableAllArraysValue现在比分配的总空间小。

结果是,内存不是全局释放额外的内存,而是被保留。它可以只有用于小于524,280字节的数组。除非重新启动MATLAB,否则无法为更大的数组回收此内存。

在R2008a中引入

这个话题有用吗?