找回密码
 立即注册
搜索
查看: 2584|回复: 22

我不是来吐槽firefox的,问个虚拟内存的问题

[复制链接]
发表于 2010-2-1 17:37 | 显示全部楼层 |阅读模式




系统的虚拟内存给我放到ramdisk去了,pagefile我设定最大是668M

但是看图,这FF的虚拟内存占用量大大超过了实际的分页文件大小是啥原理

回复

使用道具 举报

     
发表于 2010-2-1 17:41 | 显示全部楼层
看不懂的飘过,我的firefox常年占用500m+内存
回复

使用道具 举报

     
发表于 2010-2-1 19:13 | 显示全部楼层
只有512M内存还用FF的我真是自作孽= =
回复

使用道具 举报

发表于 2010-2-1 19:25 | 显示全部楼层
3# 苏未挽


主要是因为我用了autopager这个吃内存的怪兽……
= =
回复

使用道具 举报

发表于 2010-2-1 19:27 | 显示全部楼层
explorer 60m
firefox400m

这是什么样的工作环境
回复

使用道具 举报

     
发表于 2010-2-1 19:28 | 显示全部楼层
用少点扩展咯,装越多,内存越难释放,我现在常常400多,启用的控件有19个
回复

使用道具 举报

     
发表于 2010-2-1 19:34 | 显示全部楼层
任务管理虚拟内存不等于虚拟内存
任务管理里虚拟内存更加接近实际内存使用
其实任务管理的内存占用数据是轻易被修改的所以不要信的好
具体我也是一知半解的
求科普
回复

使用道具 举报

发表于 2010-2-1 20:41 | 显示全部楼层
用少点扩展咯,装越多,内存越难释放,我现在常常400多,启用的控件有19个
marimo 发表于 2010-2-1 19:28


20+启用10+禁用插件
常驻10个标签左右也就150M 内牛满面
回复

使用道具 举报

头像被屏蔽
发表于 2010-2-1 20:50 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

     
发表于 2010-2-1 21:13 | 显示全部楼层
22启用1禁用,基本维持在400多……autopager看漫画时另算。
回复

使用道具 举报

发表于 2010-2-1 21:43 | 显示全部楼层
单位机子firefox经常开80page,占用800M内存
回复

使用道具 举报

     
发表于 2010-2-1 21:49 | 显示全部楼层
20启用9禁用

10标签页左右不到200M
回复

使用道具 举报

     
发表于 2010-2-1 23:07 | 显示全部楼层
物理内存越大的 好像会抓越多来当缓存
回复

使用道具 举报

     
发表于 2010-2-2 07:39 | 显示全部楼层
看内存占用,你只需看虚拟内存那列就可以了
回复

使用道具 举报

发表于 2010-2-2 10:54 | 显示全部楼层
37个插件31个启用

常见250左右
回复

使用道具 举报

头像被屏蔽
     
发表于 2010-2-2 11:37 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

     
发表于 2010-2-7 16:12 | 显示全部楼层
512内存,虚拟内存上到200以上反应就开始慢了,于是重启firefox。。。老爷机就是痛苦啊,扩展还只用了10个。。。
回复

使用道具 举报

发表于 2010-2-7 19:19 | 显示全部楼层
本帖最后由 鸡蛋灌饼 于 2010-2-7 19:26 编辑
看内存占用,你只需看虚拟内存那列就可以了
zmw_831110 发表于 2010/2/2 07:39

胡扯
虚拟内存那列显示的东西和实际使用的内存完全是两回事
真正有参考价值的是Peak Working set(Process Explorer)
还在看Virtual Memory的麻烦先把Virtual Memory是什么,还有操作系统是如何管理内存的搞清楚
回复

使用道具 举报

     
发表于 2010-2-7 20:00 | 显示全部楼层
本帖最后由 zmw_831110 于 2010-2-7 20:12 编辑
胡扯
虚拟内存那列显示的东西和实际使用的内存完全是两回事
真正有参考价值的是Peak Working set(Process Explorer)
还在看Virtual Memory的麻烦先把Virtual Memory是什么,还有操作系统是如何管理内存的搞清楚 ...
鸡蛋灌饼 发表于 2010-2-7 19:19


又是你

我又没说,虚拟内存显示的就是实际使用的内存.
我是说,要看PF爆不爆,只需看虚拟内存那个栏位即可
对于一般用户而言,虚拟内存显示的那个栏位比内存显示的那个栏位更有参考价值.因为后面PF显示的都是虚拟内存,包括峰值等一系列数值

你这个人真较真

有时候,发现PF占用比较多,看虚拟内存那项比看内存占用那项更靠谱,停止掉那项,PF就降低相应数值的PF占用.
这个是对一般用户最有效的
别在文字上较真,你真有心,给大家普及普及,别在这叫
回复

使用道具 举报

发表于 2010-2-7 20:14 | 显示全部楼层
XP系统下你设置的“虚拟内存·伪”=PAGEFILE页面文件(其实人家没错,你设置的页面文件扩大了系统的虚拟内存,但是人们都习惯把页面文件直接叫虚拟内存了)
页面文件与真实内存做统一地址映射成为“虚拟内存·真”
各种程序统统在“虚拟内存·真”中划分内存资源。

于是比如你有1G内存,在“虚拟内存·伪”中设置了512M,你的“虚拟内存·真”就是1.5G

那么你的程序所占用的“虚拟内存·真”大小比你的页面文件大就没有什么稀奇了。
回复

使用道具 举报

 楼主| 发表于 2010-2-7 22:43 | 显示全部楼层
XP系统下你设置的“虚拟内存·伪”=PAGEFILE页面文件(其实人家没错,你设置的页面文件扩大了系统的虚拟内存,但是人们都习惯把页面文件直接叫虚拟内存了)
页面文件与真实内存做统一地址映射成为“虚拟内存·真”
各种程序统统在“虚拟内存·真”中划分内存资源。

于是比如你有1G内存,在“虚拟内存·伪”中设置了512M,你的“虚拟内存·真”就是1.5G

那么你的程序所占用的“虚拟内存·真”大小比你的页面文件大就没有什么稀奇了。
touhouproject 发表于 2010-2-7 20:14



也就是XP系统任务管理器的”虚拟内存占用“显示的是“虚拟内存·真”?
这我就完全明白了,也就是把“虚拟内存·伪”——PAGEFILE页面文件禁用掉,“虚拟内存·真”=物理内存的总量?
回复

使用道具 举报

发表于 2010-2-8 19:53 | 显示全部楼层
又是你

我又没说,虚拟内存显示的就是实际使用的内存.
我是说,要看PF爆不爆,只需看虚拟内存那个栏位即可
对于一般用户而言,虚拟内存显示的那个栏位比内存显示的那个栏位更有参考价值.因为后面PF显示的都是虚拟内存,包括峰值等一系列数值

你这个人真较真

有时候,发现PF占用比较多,看虚拟内存那项比看内存占用那项更靠谱,停止掉那项,PF就降低相应数值的PF占用.
这个是对一般用户最有效的
别在文字上较真,你真有心,给大家普及普及,别在这叫
zmw_831110 发表于 2010/2/7 20:00

首先解释一下虚拟内存是什么。
一个常见的误解是虚拟内存是内存不足,把硬盘上的空间虚拟一部分当作内存使用。但事实远远不是这样。
虚拟内存,提供了一种机制分离虚拟的内存访问和实际的内存操作。让每个进程认为自己处于一个独立的4G的地址空间中。

然后解释一下操作系统的内存分配流程
当一个进程请求内存时,系统并不是直接把内存分配给这个进程,而是在操作系统用于管理进程的数据结构中做做修改,标出“某某地方(虚拟地址)的内存已经可以给该进程使用”。当进程真的访问这个地址时,操作系统才会把内存实际分配给它。

接下来解释一下XP taskmgr中的那个虚拟内存大小
那个虚拟内存大小,就是上面提到的“某某虚拟内存区已经可以给该进程使用”的总大小。至于该进程到底用了多少,消耗了多少系统资源,和这个“虚拟内存大小”关系不大。

实验:
#include <malloc.h>
#include <stdio.h>
#include <stdlib.h>

int main()
{
        int i = 0;
        for(; i < 18; i++)
        {
                void *ptr = malloc(1024*1024*512); // 512MB
                printf(\\"%ld\\n\\", ptr);
        }
        system(\\"pause\\");
        return 0;
}
若想获得下文提到的戏剧性效果,请最好使用64位VC9编译器编译,并在64位Windows操作系统下运行此程序
测试环境Windows 7 x64 Ent.
Mem:2G
Page file:2G(managed by system)


结果如图。





由于我用的是Win7x64,它的taskmgr中已经没有“虚拟内存大小”这一栏了,故使用ProcessExplorer代替。
从ProcessExplorer中可以看到一个很可笑的虚拟内存大小:4.5G,这甚至超过了我的物理内存+页面文件总大小。

另外一方面,taskmgr给出的值就十分正常。

还有一个问题,这种情况是否常见?
分配一大块内存,但不立刻使用的情况还是比较多的,当程序想要自己管理内存,进行特化的内存分配处理时就会出现——通用的内存管理函数并不一定是最合适的。

最后回到正题,这个值有没有参考意义?
对于Firefox,答案是“有一些”,据我(很久之前了,如上文所提Windows 7的taskmgr已经没有这个容易造成混乱的值可看了)观察,Firefox的实际内存消耗和“虚拟内存大小”是正相关的。
回复

使用道具 举报

     
发表于 2010-2-8 21:48 | 显示全部楼层
那么请问,XP下,看哪列靠谱?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|上海互联网违法和不良信息举报中心|网上有害信息举报专区|962110 反电信诈骗|举报电话 021-62035905|Stage1st ( 沪ICP备13020230号-1|沪公网安备 31010702007642号 )

GMT+8, 2025-9-18 23:25 , Processed in 0.146773 second(s), 7 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表