IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

关于虚拟内存的一点理解

PHPor 的Blog 2010-05-09 23:00:20 累计浏览 3,877 次
本机暂存
    1. 单个程序使用的最大的内存空间的大小收到内存指针的大小的限制,对于32位机,指针是4字节类型,最大标识4G的内存空间,所以32位机单个程序使用的内存空间不可能超过4G,实际上具体多少?我也不知道

    2. 对于windows来讲,虽然好像每个程序都可以使用接近(可能差的比较远点儿)4G的内存空间,但是总的虚拟内存的大小也是有一个限制的,在“我的电脑”=》属性=》高级=》性能(设置)=》高级=》虚拟内存 这里可以设置,这里设置允许使用的磁盘空间的大小,虚拟内存的总大小是我们的物理内存和这里设置的总和。如果总和为5G, 则你的任务管理器里面的内存项最大为5G,当所有程序开辟的内存大于5G时,则开辟内存失败,系统提示“虚拟内存不足”。

    3. 对于linux,好像没有处理指针的限制没有在开辟的时候做其他的限制,没有想windows上所谓的总的虚拟内存的限制,linux上的swap只是限制用于交换的磁盘空间的大小,但是并不用于限制是否开辟的内存超过了物理内存+swap的大小。

    4. 我这里的测试都是使用的malloc函数,就是说,申请的内存实际上并没有真正使用这些内存,大概这就是“记账”的概念吧; 如果你用calloc函数来做这些测试,结果会不一样的,因为calloc是需要初始化内存的,和我想要证明的问题不符,所以不用。

    5. linux的free命令说明的是物理内存和swap的使用情况,至于(某个)程序“想”使用(已经malloc,但是还没有初始化,可能没有这样的程序)的虚拟内存的大小是体现不出来的。

同分类推荐文章

  1. 科技爱好者周刊(第 401 期):如何赚到10亿美元 (2026-06-26 08:05:38)
  2. 如何做决策 - 从 Go 的一个 issue 说起 (2026-06-26 08:00:00)
  3. Seven Player:Windows上播放115网盘视频的增强工具 (2026-06-09 00:06:47)

查看更多 开发者 文章 →

建议继续学习

  1. linux内核研究笔记(一)内存管理 – page介绍 (累计阅读 10,487)
  2. Emacs安装配置 (累计阅读 8,370)
  3. 有道面试总结 (累计阅读 7,054)
  4. 使用scp在windows和Linux之间互传文件 (累计阅读 5,368)
  5. 为什么国内还有那么多网站使用.NET架构? (累计阅读 5,243)
  6. 内存学习――为什么需要虚拟内存 (累计阅读 5,129)
  7. Git安装使用手记 (累计阅读 5,053)
  8. 如何在Windows下编译或调试MySQL (累计阅读 4,671)
  9. nodejs教程:配置nodejs.exe的windows目录结构 (累计阅读 4,666)
  10. windows命令行查看端口和进程信息,解决端口占用现象 (累计阅读 4,594)