• 请不要在回答技术问题时复制粘贴 AI 生成的内容
a7898585
V2EX  ›  程序员

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

  •  
  •   a7898585 · Aug 15, 2013 · 7341 views
    This topic created in 4829 days ago, the information mentioned may be changed or developed.
    一朋友安装了96M内存的xp系统,并且开了一个占用30M-40M的程序,相当于系统只用掉50M不到,说是使用虚拟内存的。
    我想问下虚拟内存能代替真实内存吗?
    28 replies  •  1970-01-01 08:00:00 +08:00
    lichao
    lichao
    Aug 15, 2013❤️1
    1
    能,但是很慢很慢很慢
    windfi
    windfi
    Aug 15, 2013 via Android❤️1
    2
    一直都是当做内存调用的啊……
    a7898585
    a7898585
    OP
    Aug 15, 2013
    3
    @lichao
    @windfi
    那么比如我原来内存1G的但是我开了N个程序,需要3G内存也能用虚拟内存代替吗
    lichao
    lichao
    Aug 15, 2013
    4
    @a7898585 可以,但是慢到爆。
    字里行间里可以看出你没明白虚拟内存是什么。虚拟内存就是从硬盘上划出一块空间当内存用,但是硬盘的读写速度比真实的内存条慢很多,就这么简单。
    ybbswc
    ybbswc
    Aug 15, 2013
    5
    试试readyboost功能呢?
    我记得有个软件支持XP的readyboost,把U盘当内存用。
    hedaors
    hedaors
    Aug 15, 2013
    6
    @ybbswc 把U盘当内存? 那岂不是比硬盘还要慢?
    ybbswc
    ybbswc
    Aug 15, 2013
    7
    可能是我理解错了。
    http://baike.baidu.com/view/1001106.htm
    wog
    wog
    Aug 15, 2013❤️1
    8
    可以,不过速度和你的硬盘速度有关
    这个大学里不是连如何寻址都学过么
    felix021
    felix021
    Aug 15, 2013
    9
    @hedaors U盘当内存其实在很多情况下比硬盘要快,因为U盘的随机读比硬盘快很多。
    ybbswc
    ybbswc
    Aug 15, 2013
    10
    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
    shinwood
    Aug 15, 2013 via iPhone
    11
    如果用 SSD 就无此方面的顾虑了,把硬盘当内存,其实还是很影响效率的,具体表现在开程序过多内存不够时,硬盘灯会狂闪当内存来读写,也就是那个 pagefile.sys 文件。
    zhujinliang
    zhujinliang
    Aug 15, 2013
    12
    实际上不能吧,硬盘又不能被CPU直接寻址。

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

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

    通过这样反复交换,看起来可用内存被扩大了。
    nybux
    nybux
    Aug 15, 2013
    13
    另一个名字叫交换内存swap,这样解释你应该就清楚了
    gdm
    gdm
    Aug 15, 2013
    14
    即使用ssd当虚拟内存,速度还是远远不如物理内存的。更何况机械硬盘呢。
    Choutreeman
    Choutreeman
    Aug 15, 2013
    15
    @hedaors U盘要比硬盘快的多
    miaoever
    miaoever
    Aug 15, 2013
    16
    这个『当』要看对谁来讲,对于应用层的程序来看,你访问的始终是逻辑地址,这个地址空间是可以大于实际内存的,而超出物理内存的部分会由 OS 负责在内存和磁盘间进行换入换出。而对于 OS 而言,直接面对的是物理内存,所以就没有虚拟内存这一层的抽象了,能够使用的内存空间就只有物理内存那么大。
    Sdhjt
    Sdhjt
    Aug 15, 2013
    17
    其实虚拟内存就是给人心理安慰的
    timonwong
    timonwong
    Aug 15, 2013
    18
    虚拟内存概念在物理内存之上,你该指的是页面文件。
    Golevka
    Golevka
    Aug 15, 2013
    19
    楼主需要脑补一下虚拟地址, MMU, paging以及swapping
    scusjs
    scusjs
    Aug 15, 2013
    20
    废话。。。要不然玩大型游戏怎么办。。。
    但是虚拟内存调用很慢,相当于文件读写。
    hedaors
    hedaors
    Aug 16, 2013
    21
    @sophy 为神马我向 u 盘拷东西的时候都不超过 20 M/s, 往移动硬盘拷的时候 都 30+ M/s 啊? (usb 2.0)
    sivacohan
    sivacohan
    Aug 16, 2013 via Android
    22
    @Golevka mmu和swap有什么关系。。。
    slixurd
    slixurd
    Aug 16, 2013
    23
    @hedaors U盘的质量参差不齐,SLC、MLC什么的,而且有的U盘为了保证稳定和良品率会限速(所以就有了焊掉某个引脚加速的神U盘出现..
    硬盘什么的普遍不存在这个问题,毕竟现在的硬盘速度远超过usb2.0的极限速度了(当然2.0下40M/s都很难达到
    Golevka
    Golevka
    Aug 16, 2013
    24
    @sivacohan 没什么关系
    zhttty
    zhttty
    Aug 16, 2013
    25
    @hedaors
    @wog
    @miaoever
    @hedaors

    1、U盘快的在于随机读取,突发读取快,其实就是省掉了机械硬盘机械部分寻址寻道和移动的过程,但是对于连续的读写,2.0的u盘远远慢于5400转的机械硬盘,3.0的u盘基本和7200转的机械硬盘相当。

    2、swap是交换分区,不能说是内存,虚拟内存的叫法也不太妥当,操作系统仅有在虚拟内存不足的时候才会将内存中比较不活跃的数据移到swap中,好空出内存空间,这种反复交换的过程是非常消耗IO的,会很慢,相当于大批量的随机读写机械硬盘。

    3、ssd固态硬盘和u盘都是无机械结构的,只不过ssd硬盘的算法比较先进,位宽也打很多,所以传输数据是3.0u盘的8~12倍,随机的读能力特别强,写能力稍一般,总体快过机械硬盘;

    4、如果能有4块ssd做raid,然后将raid作为swap,速度勉强能达到ddr3 1333内存的速度,不过这成本和性价比只是比内存稍低罢了,应用价值不高。
    zhttty
    zhttty
    Aug 16, 2013
    26
    @zhttty

    第2条的第一行笔误,“虚拟内存”改为“内存”
    第3条的第一行笔误,"打"改为“大”
    Shieffan
    Shieffan
    Aug 16, 2013
    27
    真实内存访问延时 100clk more or less(2GHZ CPU 1clk不到1纳秒),i3 CPU内存带宽 25.6GB/s
    硬盘平均寻道时间几毫秒,SATA3 带宽6Gb/s 速度600MB/s。 就算是SSD,latency也在几毫秒...

    所以基本就不是在一个数量级的
    Kvm
    Kvm
    Aug 16, 2013
    28
    死磕硬盘。。。。。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   3795 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 68ms · UTC 05:30 · PVG 13:30 · LAX 21:30 · JFK 00:30
    ♥ Do have faith in what you're doing.