虚拟内存能当真实内存使用吗?

2013-08-15 07:44:31 +08:00
 a7898585
一朋友安装了96M内存的xp系统,并且开了一个占用30M-40M的程序,相当于系统只用掉50M不到,说是使用虚拟内存的。
我想问下虚拟内存能代替真实内存吗?
5909 次点击
所在节点    程序员
28 条回复
lichao
2013-08-15 07:56:23 +08:00
能,但是很慢很慢很慢
windfi
2013-08-15 08:07:14 +08:00
一直都是当做内存调用的啊……
a7898585
2013-08-15 08:19:05 +08:00
@lichao
@windfi
那么比如我原来内存1G的但是我开了N个程序,需要3G内存也能用虚拟内存代替吗
lichao
2013-08-15 08:22:06 +08:00
@a7898585 可以,但是慢到爆。
字里行间里可以看出你没明白虚拟内存是什么。虚拟内存就是从硬盘上划出一块空间当内存用,但是硬盘的读写速度比真实的内存条慢很多,就这么简单。
ybbswc
2013-08-15 08:24:00 +08:00
试试readyboost功能呢?
我记得有个软件支持XP的readyboost,把U盘当内存用。
hedaors
2013-08-15 08:27:24 +08:00
@ybbswc 把U盘当内存? 那岂不是比硬盘还要慢?
ybbswc
2013-08-15 08:29:54 +08:00
可能是我理解错了。
http://baike.baidu.com/view/1001106.htm
wog
2013-08-15 08:30:03 +08:00
可以,不过速度和你的硬盘速度有关
这个大学里不是连如何寻址都学过么
felix021
2013-08-15 08:33:54 +08:00
@hedaors U盘当内存其实在很多情况下比硬盘要快,因为U盘的随机读比硬盘快很多。
ybbswc
2013-08-15 08:36:26 +08:00
1 Plug in the flash drive to the USP port on the computer.
2 Click "Start" on the desktop and then right-click "My Computer."
3 Wait for the drop-down menu to appear, then scroll down and click "Properties." The "System Properties" window opens.
4 Click the "Advanced" tab.
5 Click the "Settings" button under the "Performance" heading. The "Performance Options" window opens.
6 Click the "Change" button in the virtual memory section.
7 Click the flash drive in the drive section and then click the custom size section. Increase the maximum size for the virtual memory as much as you need.
8 Click "OK" to close the window. Then click the "OK" button for the next two windows that open. You have now set the virtual memory size for the flash drive.
shinwood
2013-08-15 08:46:08 +08:00
如果用 SSD 就无此方面的顾虑了,把硬盘当内存,其实还是很影响效率的,具体表现在开程序过多内存不够时,硬盘灯会狂闪当内存来读写,也就是那个 pagefile.sys 文件。
zhujinliang
2013-08-15 08:52:30 +08:00
实际上不能吧,硬盘又不能被CPU直接寻址。

比如有512M内存,程序A运行中,吃掉了500M,此时需要运行B的话,B要求分配200M内存,系统发现可用内存不够,而且此时A不是前台活动的程序,于是把A挂起,把A在内存中的数据放入虚拟内存,清理A占的空间,分出200M给B。

如果你此时再切换到A程序,系统会有个较长时间的卡顿,此时,系统重新分配500M内存给A,然后将数据从虚拟内存再读回物理内存,然后激活A。而分配500M内存给A时,又出现内存不够用的情况,又需要挂起B,将B的数据放入虚拟内存。。。

通过这样反复交换,看起来可用内存被扩大了。
nybux
2013-08-15 09:04:13 +08:00
另一个名字叫交换内存swap,这样解释你应该就清楚了
gdm
2013-08-15 17:38:21 +08:00
即使用ssd当虚拟内存,速度还是远远不如物理内存的。更何况机械硬盘呢。
sophy
2013-08-15 17:49:21 +08:00
@hedaors U盘要比硬盘快的多
miaoever
2013-08-15 18:07:41 +08:00
这个『当』要看对谁来讲,对于应用层的程序来看,你访问的始终是逻辑地址,这个地址空间是可以大于实际内存的,而超出物理内存的部分会由 OS 负责在内存和磁盘间进行换入换出。而对于 OS 而言,直接面对的是物理内存,所以就没有虚拟内存这一层的抽象了,能够使用的内存空间就只有物理内存那么大。
Sdhjt
2013-08-15 18:12:27 +08:00
其实虚拟内存就是给人心理安慰的
timonwong
2013-08-15 18:43:41 +08:00
虚拟内存概念在物理内存之上,你该指的是页面文件。
Golevka
2013-08-15 22:39:20 +08:00
楼主需要脑补一下虚拟地址, MMU, paging以及swapping
scusjs
2013-08-15 22:41:41 +08:00
废话。。。要不然玩大型游戏怎么办。。。
但是虚拟内存调用很慢,相当于文件读写。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/79118

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX