为什么在我最小化窗口以后,我的LabVIEW VI或EXE使用的内存减少了?



主要软件:
主要软件版本: 5.0
主要软件修正版本: N/A
次要软件: N/A

问题:

我对于我的LabVIEW VI或EXE的运行时内存使用量很感兴趣。Windows任务管理器显示,当我最小化VI或EXE的时候LabVIEW的内存使用量会明显地减少,为什么会这样?



解答:

Windows操作系统为运行的进程分配随机存取存储器(RAM),被分配给进程的物理RAM叫做工作区,访问工作区的数据是相当快的。如果一个进程需要使用的内存大小超过操作系统分配给他的大小,它可以使用硬盘作为虚拟内存。为了能够使用虚拟内存里的数据,操作系统必须把数据从虚拟内存传到RAM中,这个过程叫做内存分页。访问工作区的数据是极其快的,而访问虚拟内存的数据要相对慢一些,这是因为磁盘操作要慢于RAM操作,由于内存分页花费了额外的时间。

当一个应用程序最小化了它的顶层窗口,操作系统减少分配给它的工作区大小,释放RAM来给前台进程使用。如果一个最小化的程序需要经常性地访问虚拟内存,那么它的性能将会受到一定的影响。你可以通过以下这个链接来了解这个具体的执行过程
 Microsoft KnowledgeBase 293215: The working set of an application is trimmed when its top-level window is minimized.

这是一个预期的行为,它不是LabVIEW的功能而是Windows的功能。在其它的应用程序上也会有类似的表现,例如Word或是计算器。当把相同的程序最大化以后,你会发现分配给它的内存并没有恢复到原来的大小,这是因为在开始启动一个应用程序的时候,Windows会分配一个超过所需大小的内存给应用程序,但是当一个最小化的程序被重新最大化以后,Windows会给它分配一个更合理大小的内存。如果由于某种原因这个过程发生问题,微软KB解释了在程序最小化的时候,如何来避免工作区被修改。你可以通过修改Background Services 中的处理器调度选项来修改这一行为,在 Control Panel»System»Advanced»Performance»Advanced»Processor Scheduling。

备注: 改变处理器调度可能会改变系统的性能



相关链接: DeveloperZone Tutorial: Advanced LabVIEW Debugging: Profiling VI Execution with the Desktop Execution Trace Toolkit
Microsoft KnowledgeBase 293215: The Working Set of an Application is Trimmed when its Top-level Window is Minimized
Microsoft KnowledgeBase 108449: Working Set Size, Nonpaged Pool, and VirtualLock()

附件:





报告日期: 09/16/2009
最近更新: 01/31/2011
文档编号: 51F68IYP