首页 > 基础设施 > 正文

使用Windows 7任务管理器实现内存管理

2012-07-03 17:30:58  来源:TechTarget中国

摘要:有时我们需要快速简单的方法来解决Windows 内存管理问题。还有些时候可能会需要更深层次的管理,这就需要Windows 7任务管理器的协助。
关键词: Windows 内存

    有时我们需要快速简单的方法来解决Windows内存管理问题。还有些时候可能会需要更深层次的管理,这就需要Windows 7任务管理器的协助。


    Windows XP、Windows Vista和Windows 7都有内置的任务管理器软件,包含了性能显示,但是Vista和 Windows 7中的相关选项差别很大。这些资源管理器都带有资源监视器按钮,可以提供一些额外的信息。


    Windows 7任务管理器vs. XP/Vista


    图1是Windows XP任务管理器,图2是Vista任务管理器,图3是Windows 7.请注意它们的主要区别。
 

\
 


    相比XP,Vista和Windows 7服务选项中的内容有明显的改善。在图1中,有一个名为svhost.exe的进程。由于该进程是其它进程运行的基础,很难知道哪个才是恶意进程。在Windows XP我们需要使用tasklist命令来分拆出svhost.exe中的进程。看图4a,任务管理器显示出svhost.exe进程的PID为1144.


    通过点击服务页面,在Vista和Windows 7任务管理器中跟踪PID号(图4b),我们可以轻松看到svhost.exe下所有的进程信息。
 

\
 

    图5[page]

    该表中的第二项是“性能信息”.图5中显示了Vista的内存资源监视器画面,可以动态显示出每秒的硬错误数(磁盘写入错误)和“已用”物理内存(假设这和可用内存是相对的)。此外还包含了网络、磁盘和CPU使用情况。这提供了关于进程对内存使用情况的快速预览。我们可以发现磁盘的压力很大,通过点击磁盘页面信息,我们可以看到额外的相关进程和谁对磁盘资源占用率较高。


    Windows 7任务管理器的动态内存监控


    在内存页面中,进程svhost.exe(secsvcs)有1061个硬错误,使得内存资源缺乏而引发把页面文件写入到磁盘。这种情况需要研究。动态监控内存几分钟发现硬错误数迅速增加。
 

\
 

    图6


    Windows7是我最喜欢用来做内存资源分析的。图6中显示了Windows 7任务管理器中最有效的功能之一:资源监视器。它提供了物理内存、硬错误和内存使用(这是该进程实际使用的内存数,而不是预留内存数)的柱状图。资源监视器通过易辨别的颜色分类,可以动态显示出内存资源的分配情况。


    在之前一篇文章中提到Windows内存管理,可用内存可以被用于开始新的应用或服务于现有应用打开新需求。图6中显示的“可用内存”是备用和空闲内存之和。而“已修改”内存数量是指已经被修改但暂时还没有使用的页面。这对于理解任务管理器中性能的描述,以帮助解决问题非常重要。很容易地把这些跟内存管理中的内容匹配起来。


    通过任务管理器检测内存泄露


    如果使用正确的方法获得正确的数据,很容易检测内存泄露。当应用终止时,它所占用的内存页面应该释放到空闲内存中,然后被重置并被其它应用使用。这也是为什么当内存不足时,关闭一些应用可以为其它应用释放内存资源。


    另外,如果一段时间内不使用,应用也会把页面资源移动到备用列表中。这些页面资源最终被释放回空闲列表中。然而,某个恶意应用可能在挂起后也不会释放内存资源,成为内存泄露。原因有很多,最基本的是应用持续增加内存的使用,而且最终也不会释放。[page]
    图1显示了Windows XP的任务管理器和内存使用列。该列中以默认方式显示每个进程使用的内存数量。这对检测内存泄露帮助不大,因为一旦该工作集的内存达到Windows内存管理允许的上限,就会保持不变。在“查看”页面中选中“列”,并增加VM Size(虚拟内存)项。可以获得对所有使用内存的整体视图。


    要发现内存泄露,重启机器并启动被怀疑的进程。监控虚拟内存的数量,如果有泄露会看到分配给进程的内存数量持续增加并且不会恢复,除非停止进程或重启机器。这通常在性能监视器中启用内存计数可以发现,通过任务管理器可以作为快速了解的第一步。
 

\
 

    图7


    在Windows 7中,这一项显示更清晰。图7显示了默认的工作集(内存)和内存(专有工作集)。工作集列相当于Windows XP中的内存使用列,而专有工作集显示的是可修改内存资源,在发生泄漏的情况下会出现持续增长。


    注意,要是对它进行记录的话,需要持续观察。工作集的页面资源通常会增加并随着页面整理而降低。如果发生了泄漏将会逐步增加,即使在进程挂起的时候也不会减少。


    通过性能监控,现在称为资源监控,可以看到内存的计数。可以通过工作集计数和可用内存计数来识别进程。这些内容可以保存在文件中。


    Windows 7任务管理器用于内存分析


    Windows 7在任务管理器的资源监视器功能中做了明显改善。参考图6并结合第一篇文章中的内容可以了解到几点:


     可用内存:由空闲内存、备用内存和零内存组成。Windows 7任务管理器以图形方式显示了这几种内存数。


     如果备用内存值高,内存的使用情况良好--很多内容都可以快速缓存存取。


     如果空闲内存值低,这很好。一些人认为这是内存溢出,但可以通过结束进程来增加。所以,除非结束了大量的进程,否则它的值应该接近于零,Windows 7的情况如图5所示,Vista类似。注意在XP中要看到该信息只能使用Windows的内核调试器。


     观察页面错误行为并非表明需要更多内存除非同时对某个文件发生了读请求。这可以通过使用SysInternals'Process Monitor来决定。


     在任务管理器中显示的Commit Limit 或 Commit Charge值得是专属虚拟内存的可用数量--页面文件和RAM之和。如果Commit Limit很低,应用可用来存放数据的内存就变少,可能提示“系统虚拟内存值太低”错误。这可以通过增加页面文件大小或RAM来改善,不过增加页面文件大小会导致性能比较差。


     虽然XP、Vista和Windows 7可以在不使用页面文件的模式下工作,但是内存命中情况会降低,而应用很容易发生内存溢出。


    Windows 7的任务管理器使得内存诊断变得简单,不需要设置Windows 资源监视计数器也可以完成Windows内存管理。计数器必要时用来做深入了解。任务管理器的资源监视器也提供了对磁盘、网络和CPU资源的概览。


第三十四届CIO班招生
国际CIO认证培训
首席数据官(CDO)认证培训
责编:zhangyexi

免责声明:本网站(http://www.ciotimes.com/)内容主要来自原创、合作媒体供稿和第三方投稿,凡在本网站出现的信息,均仅供参考。本网站将尽力确保所提供信息的准确性及可靠性,但不保证有关资料的准确性及可靠性,读者在使用前请进一步核实,并对任何自主决定的行为负责。本网站对有关资料所引致的错误、不确或遗漏,概不负任何法律责任。
本网站刊载的所有内容(包括但不仅限文字、图片、LOGO、音频、视频、软件、程序等)版权归原作者所有。任何单位或个人认为本网站中的内容可能涉嫌侵犯其知识产权或存在不实内容时,请及时通知本站,予以删除。