请教单个进程使用内存的大小有限制吗
1个回答
展开全部
有限制,你首先需要分清,物理内存和虚拟内存的概念。然后你需要知道什么是“虚空间”。
物理内存到虚拟内存的转换因不同 CPU 和操作系统的不同而不同,而且机制过于复杂,不说了。
首先,不是说你的机器有 1.5G 的物理内存就可以分配到内存。为什么呢?
因为操作系统对进程的内存管理首先是分配给进程一个“虚空间”,用户根本看不见物理内存,它所有的内存都从“虚空间”种分配。
比如 Windows 在 X86 上分配给每个进程 4G 的虚空间,这个虚空间需要软件和硬件共同实现,同样,机制过于复杂,不说了。其中 Windows 系统占用 2G,分配给用户 2G。另外 Windows 会把这个空间划分成若干个区域,malloc 的内存就来自其中的 heap 区,加入系统给你的 heap 区域是 500M,那么你只能申请总共小于 500M 的虚拟内存,而不管你的物理内存大于 500M;同样你即使只有 10M 的物理内存剩余了,一个新创建的进程照样可以分配到 500M 的虚拟空间(只要你的硬盘足够大,这个涉及到交换技术,过于复杂,不说了)。
物理内存到虚拟内存的转换因不同 CPU 和操作系统的不同而不同,而且机制过于复杂,不说了。
首先,不是说你的机器有 1.5G 的物理内存就可以分配到内存。为什么呢?
因为操作系统对进程的内存管理首先是分配给进程一个“虚空间”,用户根本看不见物理内存,它所有的内存都从“虚空间”种分配。
比如 Windows 在 X86 上分配给每个进程 4G 的虚空间,这个虚空间需要软件和硬件共同实现,同样,机制过于复杂,不说了。其中 Windows 系统占用 2G,分配给用户 2G。另外 Windows 会把这个空间划分成若干个区域,malloc 的内存就来自其中的 heap 区,加入系统给你的 heap 区域是 500M,那么你只能申请总共小于 500M 的虚拟内存,而不管你的物理内存大于 500M;同样你即使只有 10M 的物理内存剩余了,一个新创建的进程照样可以分配到 500M 的虚拟空间(只要你的硬盘足够大,这个涉及到交换技术,过于复杂,不说了)。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询