关于win7上内存占用较大的说明
1 Win7系统较XP系统内存占用高:
由于xp系统属于轻量化的系统,而win7系统是一个重量型的系统,在两者的内存管理机制上有很大的区别,根据业界和微软对外的发布公告中可以看到,win7系统对内存的占用要远远大于XP系统,而这又会大大提升系统的性能。而这正是win7中新的内存管理技术:Superfetch
2 Window7系统的内存管理机制:
Win7的内存管理使用新技术:Superfetch,Superfetch内存管理机制会将用户可能使用的应用程序页面利用内存可用空间进行预加载;尽可能地避免系统发生从硬盘的页面调用;让应用程序最快速度开启;不会由于计算机长时间闲置而使突然使用变得响应迟缓;在退出大型应用程序后会主动将之前被迫转移到虚拟内存中的页面重新调入内存当中。
在了解Superfetch内存管理机制之前。我们要弄清楚一些概念。下面我就来讲解一下什么叫做“工作集”。
一、工作集的概念和作用
简单的将内存理解为“数据结构”+“工作集”。也就是说,在内存这个大房子里面有两个房间,一个是“数据结构”房间,另一个是“工作集”房间。
工作集:将每一个程序的运行占用的内存当做一个员工,而这些员工要工作的话就必须要走进他们的办公室,然后才能开始工作,那么这些“办公室”就可以理解为工作集了。应用程序在运行过程中进程所占用的内存中的工作空间就叫做工作集。
工作集的作用就是让这些员工从家进入到大厦里(也就是内存里),也可以说,在这个大厦里,门口就是工作集房间,员工进入了工作集才能进入大厦。
可是我们知道,大厦不能只有工作集一个房间,所有的员工在这个房间里面占用的地方并不是整个大厦(内存)。而工作集房间的面积大小就要看你这个大厦有多大了。如果大一点的大厦工作集房间肯定大,那小的大厦这个房间自然就小了。这个大厦还有一个房间,就是“数据结构”。
二、物理内存的数据结构
在数据结构这个房间里,还分有五个小房间。他们分别是:
Free Page List 自由页面列表(房间)
Modified Page List已修改页面列表(房间)
Standby Page List备用页面列表(房间)
Zero Page List清零页面列表(房间)
Bad Page List坏损页面列表(房间)
三、工作集的工作原理
开机后,打开了一些程序,譬如有Word、IE、Media Player、QQ。
他们现在要工作了,就必须进入到他们的办公室(工作集)中。而这时,工作集这个房间刚刚好满员了。
先来说说这些工作:Word是写了一些字之后没有关闭;IE根本没用过它;在这时,又想打开一个新程序,Photoshop,于是考虑到工作集空间告急,所以关闭了Media Player和QQ。而Photoshop真的需要工作集当中的页面给他让路。这时就要将员工分配到数据结构房间。而数据结构有五个小房间之多,该怎么处理这些没用的员工呢? 原来,五个房间中前四个小房间都是为了收纳这些员工准备的。首先,当关闭了程序,那么这些员工就不工作了,当然就不在办公室(工作集)当中。这时,凡是关闭了的程序的工作集页面就会被转到Free Page List房间里面。就好像刚才的Media和QQ一样。而使用后(修改后)没有关闭的程序,就像Word的工作集页面就会被转入到Modified Page List房间里。最后,连用都没用IE就转入到Standby Page List里面了。
对于Free Page List中的页面大多都是关闭程序后留下的无用数据。为了始终能接纳工作集房间排除的员工,便将要这些空间给进程使用。可是带有无用的页面和代码直接使用的话就会造成错误。那么就要将这些无用数据用数字0代替。所以这些无用数据就会被挂载到Zero Page List房间中等待清零。当这个房间里面员工(无用数据)达到8个的时候,就会触发清零操作了。随后再分配给后面的使用。
四、软调页和硬调页
相信大家都有过类似的经历。当开机后,第一次运行一个程序,就比如说是Word吧,可能需要5秒才能启动。当关闭后再开,也许只用2秒。如果不关闭,直接打开另外一个Word文件,那就更快了。原因:当开机后,工作集里面没有Word这个员工(页面),他还在家(硬盘)里面。于是当召唤他的时候,它才从家走到办公室(工作集)。这样的过程就叫做硬调页了,当然需要的时间长。而当关闭了Word时候,他就被派往大厦的另一房间,却马上再次召唤他,这时,另一个房间内的数据还没被清零,他便不用从家里走来,而是直接从数据结构里面引入就可以了。在不关闭这个程序Word的情况下,他也不用为其他程序让路的时候,它还存在于办公室(工作集)里面,召唤他的时候就会更快。这样的“无需从硬盘中重新调用数据,而是将数据结构中的页面重新挂载到工作集中”的过程,便叫做软调页了。
五、进行程序页面预加载
其实从上面的Word例子可以知道,当内存中有所需程序页面的时候会使程序启动变得更快。而Superfetch具有了学习的功能,自从第一次使用windows 7时,Superfetch就开始记录用户的使用习惯,将经常使用的程序的页面在开机后进行提前加载,那么当第一次开启程序的时候便可以获得像第二次开启一样的速度了。所以这些预加载的页面就会使得内存占用变得多。
在Superfetch开机后进行预加载的时候,采用了vista中的低优先级,所以并不会对正常使用照成影响。当我们打开程序的时候就直接可以从内存中调用页面了。避免了硬调页,就会大大提升效率。
由于Superfetch要在开机后进行预加载,所以建议大家不要关机。尽量使用“休眠”或“睡眠”,这样Superfetch的预加载内容就会保留。从而提高速度和效率。
六、积极的内存调配
让离开后,程序都处于不使用状态。这时系统的一些后台程序,如磁盘整理、杀毒软件等程序就会“全速运行”。导致使用的一些程序页面不得不被挤到了硬盘虚拟内存中。可是当这些后台程序完成任务后,XP系统并不会把之前被挤到虚拟内存的页面导回内存里。于是在再次使用电脑时,系统才会手忙脚乱的进行临时调配,甚至是硬调页。导致程序响应极其迟缓。
而windows vista/7的Superfetch就非常聪明了。让这些后台程序执行完毕后,系统会立即进行内存调配。等待用户再次使用。
基于上面的这些机制原因,所以win7系统对内存的消耗是比较大的。
3 提升内存会提升一定的用户体验
如下是实验室的数据,可以看看增加内存后的性能提升:
VM核数固定、增加VM内存对性能提升分析
VM核数固定、增加VM内存对性能提升的百分比
测试项 |
测试子项 |
2U4G/2U2G |
4U4G/4U2G |
Office综合应用 |
Excel打开(86K) |
4.40 |
8.30 |
PPT打开(0.97M) |
10.06 |
7.19 |
|
Word打开(2.77M) |
17.05 |
8.58 |
|
Word打开(15M) |
(4.09) |
(0.81) |
|
windows综合应用 |
鼠标移动时间 |
(1.23) |
(3.68) |
IE打开(W3首页) |
19.04 |
23.40 |
|
小文件拷贝(1G) |
20.80 |
5.22 |
|
大文件拷贝(1G) |
15.31 |
17.22 |
|
解压缩(516M) |
7.96 |
28.17 |
|
压缩(502M) |
9.31 |
0.79 |
|
编译 |
JAVA编译(eclipse) |
7.25 |
(4.58) |
C/C++编译(VC2005) |
23.98 |
4.60 |
|
C/C++编译(VC2008) |
22.23 |
9.05 |
|
虚拟机启动 |
重启时长 |
0.91 |
14.67 |
说明:表中红色部分指的是下降的百分比,黑色部分指的是提升的百分比
4 总结:
综合上面的机制和数据可以看出,在win7系统上增加内存可以提升一定的用户体验,但是提升的程度要根据系统的负载和规格配置而定,看看资源是否已经到达阈值,增加后在处理业务峰值的冲击时帮助很大,效果明显。所以,在有剩余内存的情况下建议增加系统的内存配置,对使用效果,用户体验都是有帮助的。
关于win7上内存占用较大的说明的更多相关文章
- 解决iis内存占用过大的问题--ZT
解决iis内存占用过大的问题 在IIS6下,经常出现w3wp的内存占用不能及时释放,从而导致服务器响应速度很慢. 今天研究了一下,可以做以下配置: 1.在IIS中对每个网站进行单独的应用程序池配置.即 ...
- chrome浏览器tab页内存占用变大,网站变慢为哪般?
问题概述: 公司做的是BS应用. 之前我们的后台服务器程序是带状态的,用ehcache存储登录状态:这两天被我改成了redis存储,应用本身不再存储登录状态. 然后自测,我在测试某个很耗时间的网页操作 ...
- vue+ivew-admin开发项目,内存占用过大解决办法
项目用的ivew+admin ivewUI,直接从github上拉下来用的,配置也没改,我们页面比较多,大该30个页面的样子,一启用,我们的电脑就卡了,然后,看一下,内存占用 1.5G+了,我们电脑4 ...
- 解决.net的堆碎片化带来的内存占用过大的问题
场景 使用WCF开发的服务端在多个客户端登录后,其服务器的内存占用不断增加. 分析 使用Windbg分析得到内存碎片化严重,其中包含了非常大的空闲空间,最大的一块竟然有150M,真正使用的空间其实很小 ...
- 关于WIN7 内存占用很大的 问题svchost.exe
svchost.exe 是用来启动系统服务的,所以某个 svchost.exe 占用内存过大,可能就是它启动的那个服务占用内存过大,所以只要停止并禁用那个服务就行了. 一般来说占用内存最大的服务是 S ...
- oracle.exe 内存占用过大
现象: 明明各个schema 占用的磁盘空间都不大. oracle.exe 却占用了差不多 3G 的内存. 解决: 查了google,各种英文关键字没有找到原因. 最后,中文检索到了. https:/ ...
- mysql5.6默认情况下内存占用太大
下载了mysql5.6.12 ,默认占用内存达400多M, 而原来使用的5.0 只有30M.. 解决方案:调整以下参数----------------performance_schema_max_t ...
- C#单线程内存占用过大导致无法创建新的对象
https://msdn.microsoft.com/zh-cn/library/8cxs58a6.aspx 按照csdn原文 默认分配的堆栈大小为1mb 可以通过maxstacksize改变默认 ...
- rocketmq启动broker内存占用过大的问题
解决方法: 修改broker启动脚本runbroker.sh里面的jvm参数 JAVA_OPT="${JAVA_OPT} -server -Xms8g -Xmx8g -Xmn4g" ...
随机推荐
- Python2.7-异常和工具
来自<python学习手册第四版>第七部分,而且本书发布的时候3.1还未发布,所以针对本书的一些知识会有些滞后于python的版本,具体更多细节可以参考python的标准手册. 一.异常基 ...
- ASP.NET文件上传大小的限制解决方案
我们大家都知道ASP.NET为我们提供了文件上传服务器控件FileUpload,默认情况下可上传的最大文件为4M,如果要改变可上传文件大小限制,那么我们可以在web.config中的httpRunti ...
- KM模板
var n,m,i,j:longint; ans:int64; sel,lx,ly,slack:..] of int64; a:..,..] of int64; visx,visy:..] of bo ...
- php file_get_contents失败[function.file-get-contents]: failed to open stream: HTTP request failed!解决
在使用file_get_contents方法来获取远程文件时会出现 [function.file-get-contents]: failed to open stream: HTTP request ...
- vim 快捷键
1.vim ~/.vimrc 进入配置文件 如果不知道vimrc文件在哪,可使用 :scriptnames 来查看 set nu #行号 set tabstop=4 #一个tab为4个空格长度 set ...
- Set Php show errors
php中的Error等级分成16类,用一个16位的数值表示这16种集合元素.下面是从php.ini中截取的: ; Error Level Constants: ; E_ALL - All errors ...
- yii2权限控制rbac之菜单menu最详细教程
前面我们在博文 yii2搭建完美后台并实现rbac权限控制实例教程中完美实现了yii2的后台搭建和rbac权限控制,如果你还没有实现,请先看上文再回来参考本文,因为本文是在上文的基础上进行完善和补充. ...
- 作业成绩 final 20161124-1201 09:00
final阶段,20161124-1201 09:00. 申诉截止时间 20161206 12:00,微信联系杨贵福. 凡描述需求或BUG时,应给出以下4项: 你期待看到的现象如何 你实际看到的现象 ...
- SpringMVC学习--校验
简介 项目中,通常使用较多是前端的校验,比如页面中js校验.对于安全要求较高点建议在服务端进行校验. 服务端校验: 控制层conroller:校验页面请求的参数的合法性.在服务端控制层conrolle ...
- React 点击按钮显示div与隐藏div,并给div传children
最近做了一个react的点击按钮显示与隐藏div的一个小组件: [筛选]组件FilterButton import React,{Component} from 'react'; import {re ...