Main Content

本页的翻译已过时。点击此处可查看最新英文版本。

pack

合并工作区内存

语法

pack
pack filename
pack('filename')

说明

pack 通过重新组织信息以释放所需的空间,从而仅使用要求的最低内存。基础工作区和全局工作区中小于 2GB 的所有变量都会保留。当时定义的任何持久变量均设置成默认值(空矩阵 [])。

小心

pack 函数无法保留超过 2GB 的变量。它们将从您的工作区清除。

不要将 pack 函数与定义事件和侦听程序的对象一起使用。pack 函数将导致为工作区中的对象定义的任何侦听程序被销毁。有关在保存对象时还原侦听程序的信息,请参阅Restore Listeners

MATLAB® 软件将您的工作区数据临时存储到位于临时文件夹中的、名为 tp######.mat 的文件中(其中 ###### 为数值)。(您可以使用命令 dir(tempdir) 查看该文件夹中的文件)。

pack filename 释放内存空间,并将工作区数据临时存储到 filename 所指定的文件中。该文件驻留在您的当前工作文件夹中,且除非另外指定,该文件的扩展名为 .mat

pack('filename')pack 的函数形式。

示例

将当前文件夹更改到一个可写入文件夹,运行 pack,并返回之前的文件夹。

cwd = pwd;
cd(tempdir);
pack
cd(cwd)

提示

您只能从 MATLAB 命令行运行 pack

如果指定 filename 参数,则该文件必须驻留在您拥有写入权限的文件夹中。

pack 函数不会影响分配给 MATLAB 进程的内存量。您必须退出 MATLAB 才能释放该内存。

由于 MATLAB 使用内存管理的堆方法,扩展的 MATLAB 会话可能导致内存碎片化。在内存碎片化的情况下,可能存在大量的可用空间,却没有足够的连续内存来存储新的大型变量。

如果收到 MATLAB 发出的 Out of memory 消息,pack 函数可以在无需强制删除变量的情况下为您找到部分可用内存。

pack 函数通过以下方式释放空间:

  • 将基础和全局工作区中的所有变量保存到临时文件。

  • 清除内存中的所有变量和函数。

  • 从临时文件重新加载基础和全局工作区变量,然后删除该文件。

如果使用 pack 后仍然不具备足够的可用内存来继续操作,则您必须清除部分变量。如果您经常出现内存不足,可以在 MATLAB 会话早期分配大型矩阵,并使用以下与特定系统相关的技巧。

  • 在 The Open Group UNIX® 平台上运行 MATLAB 时,请系统管理员增加您的交换空间。

  • 在 Microsoft® Windows® 平台上,使用 Windows 控制面板增加虚拟内存。

要在运行 pack 时保留持久变量,请在函数中使用 mlock

另请参阅

|

在 R2006a 之前推出