在虚拟地址模式下,一个程序可以使用的内存容量跟计算机的物理内存(也就是你的内存条)没有关系,它由虚拟地址的取值范围决定。

32位操作系统

在32位操作系统中,程序能使用的最大内存是 4GB,也就是2的32次方。即使你的电脑安装的是16G的内存条也没用,剩下的12G只能空闲着。

让你买那么大的内存,浪费了吧!

64位操作系统

在64位操作系统中,理论上能够访问的虚拟地址的范围是 2^64。

这是一个很大的值,几乎是无限的,就目前的技术来讲,不但物理内存不可能做到这么大,CPU的寻址能力也没有这么大,实现64位长的虚拟地址只会增加系统的复杂度,带不来任何好处。

Windows 和 Linux 都对虚拟地址进行了限制,仅使用虚拟地址的低48位(6个字节),总的虚拟地址大小为 2^48 = 256TB。

256TB也太大了吧,量子计算机时代才会用这么多内存吧!

操作系统还要占用内存

操作系统也是一个程序,而且是其他程序的领导,要时刻管理其他程序,谁不听话就惩罚他,让他崩溃。

反之,普通程序也需要操作系统的帮助,尤其是在访问硬件时,例如分配内存、打开硬盘上的文件、在屏幕上绘画等。

操作系统和普通程序既相爱又相恨。

为了达到又爱又恨的目的,操作系统也要占用一部分内存。

32位的Windows默认占用4GB中的2GB,程序只能使用剩下的2GB。

32位的Linux默认占用4GB中的1GB,程序只能使用剩下的3GB。

64位的Windows默认占用256TB中的248TB,程序只能使用剩下的8TB。

64位的Linux默认占用256TB中的128TB,程序只能使用剩下的128TB。

当然,操作系统占用的内存是可以通过设置来更改的。

总起来说,程序能使用多大的内存由操作系统决定,不同的操作系统、不同的位数都会不一样。

现在我们使用的操作系统大都是64位的了,内存已经足够使用了,所以如果你不缺银子,就使劲升级内存吧,多多益善,不会浪费的。

一个程序最多可以使用多少内存?相关推荐

  1. Linux 下查看某一个程序所使用的内存方法介绍

    Linux 下查看某一个程序所使用的内存方法介绍 在 Linux 上进行开发和运营维护的时候,免不了要查看某一个程序所占用内存的情况.常用方法总结如下(注意第四种方法): 第一种:ps -aux | ...

  2. 程序运行时的内存空间分布

    本文转载自http://blog.csdn.net/ljianhui/article/details/21666327 谢谢原文作者的辛勤付出. 我们在写程序时,既有程序的逻辑代码,也有在程序中定义的 ...

  3. C++中运行一个程序的内存分配情况及qt中的内存管理机制

    一个由c/C++编译的程序占用的内存分为以下几个部分 1.栈区(stack)- 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等.其操作方式类似于数据结构中的栈. 2.堆区(heap) - 一 ...

  4. Java黑皮书课后题第8章:*8.10(最大的行和列)编写一个程序,在一个4*4的矩阵中随机填入0和1,打印该矩阵,分别找到第一个具有最多1的行和列

    *8.10(最大的行和列)编写一个程序,在一个4*4的矩阵中随机填入0和1,打印该矩阵,分别找到第一个具有最多1的行和列 题目 题目描述与运行示例 破题 代码 题目 题目描述与运行示例 8.10(最大 ...

  5. 【OS学习笔记】十 实模式:实现一个程序加载器-程序加载器如何将用户程序加载到内存并执行

    上一篇文章学习了以下内容: 用一种不同的分段方法,从另一个不同的的角度理解处理器的分段内存访问机制 使用循环和条件转移指令来优化主引导扇区代码 点击链接查看上一篇文章:点击链接查看 对于主引导扇区部分 ...

  6. nyoj 36 最长公共子序列 dp问题最长公共子序列 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 咱们就不拐弯抹角了,如题,需要你做的就是写一个程序,得出最长公共

    最长公共子序列 时间限制: 3000 ms  |  内存限制: 65535 KB 难度: 3 描述 咱们就不拐弯抹角了,如题,需要你做的就是写一个程序,得出最长公共子序列. tip:最长公共子序列也称 ...

  7. 《c primer pius》第十章第6题,编写一个程序,初始化一个二维double数组,并利用练习2中的任一函数来把这个数组复制到另一个二维数组(因为二维数组是数组的数组,所以可以使用处理一维数组的

    <c primer pius>第十章第6题,编写一个程序,初始化一个二维double数组,并利用练习2中的任一函数来把这个数组复制到另一个二维数组(因为二维数组是数组的数组,所以可以使用处 ...

  8. android一个程序多大内存合适,手机内存越大越好吗 手机内存大小的影响

    随着这几年安卓手机的硬件快速升级,手机的内存也越来越大,从最初的512M到1GB,再到现在主流的2GB.3GB,华硕甚至带来了4GB内存的新机,可以看出内存已然成为手机硬件比拼的重要内容之一.那么大内 ...

  9. 一个程序最多能占用的内存大小

    因为内存资源总是稀缺的,即便在拥有百 G 内存的机器上,我们都可以轻易把内存填满.为了解决这个问题,就需要用到虚拟化技术. GC 是面试的高频重点知识,同时也是程序员日常开发需要理解的部分.学习 GC ...

最新文章

  1. linux平台 一个简单的helloworld动态库的制作与使用
  2. css+图标偏移,css background-position 偏移的问题
  3. 绵阳python培训_《绵》字意思读音、组词解释及笔画数 - 新华字典 - 911查询
  4. OperationalError: (1044, Access denied for user ''@'localhost' to database 'mydb')
  5. 【Linux部署】NTP时间服务器搭建及Linux+Windows客户端使用(一篇学会使用NTP服务)
  6. hands-on Machine Learning with sklearn
  7. javascript中内置对象简介、Array
  8. 计算机网络英文题库,强烈推荐计算机网络英文试题库(附答案)chapter.doc
  9. mysql引号注入_MySql注入
  10. RabbitMQ原理及实现
  11. vi编辑器基本命令(简略)
  12. STM8S103 LCD5110例程带字库
  13. 洛谷 P1338 末日的传说 解题报告
  14. 基于DTU的工业控制组网方案
  15. 合并时显示是无效的m3u8文件_m3u8合并,如何合并m3u8文件
  16. 今天的一点感悟-20211216
  17. 步进电机驱动控制总结(一)
  18. 自动驾驶中激光雷达如何检测障碍物
  19. word或wps的相关API脚本js操作
  20. 开源项目车牌识别EasyPR的使用

热门文章

  1. 拆字程序c语言代码,单片机实验一拆字程序.doc
  2. js截取字符串的方法
  3. JJWT 实现 JWT
  4. 手机文字转语音有什么免费软件?2023年热门抖音短视频配音工具
  5. Some code changes cannot be hot swapped into a running virtual machine
  6. 怎么重置unity界面_从零开始的星露谷-用Unity还原星露谷物语:移动,界面篇(1)...
  7. 函数返回值的简述(简洁明了)
  8. 录像机的即时回放是什么意思
  9. 磁盘最优存储问题【贪心算法】
  10. 国产CAD:你永远可以相信国产软件的创新力!