“我怎么可以去?”;“记忆过剩”;在Xcode执行中
我已经编写了一个函数,它将分配我机器上可用的更多内存(16GB),但运行该函数似乎对我的实际机器没有任何影响(页面底部内存压力部分下的“使用的内存”在我运行它时一点也不改变)。以下是显示以下内容的屏幕截图:“我怎么可以去?”;“记忆过剩”;在Xcode执行中,c,xcode,macos,memory,C,Xcode,Macos,Memory,我已经编写了一个函数,它将分配我机器上可用的更多内存(16GB),但运行该函数似乎对我的实际机器没有任何影响(页面底部内存压力部分下的“使用的内存”在我运行它时一点也不改变)。以下是显示以下内容的屏幕截图: 为什么mrmoy在运行这个程序时没有改变?我如何才能达到“37GB”?它在调试时是否使用了“假内存”或其他什么东西,并且有断点?大多数现代操作系统,当然是Mac OS或Linux,都使用这种内存。虚拟内存是操作系统获取一页磁盘空间并将其映射到可寻址内存的能力。此内存有一个虚拟地址空间。这意
为什么mrmoy在运行这个程序时没有改变?我如何才能达到“37GB”?它在调试时是否使用了“假内存”或其他什么东西,并且有断点?大多数现代操作系统,当然是Mac OS或Linux,都使用这种内存。虚拟内存是操作系统获取一页磁盘空间并将其映射到可寻址内存的能力。此内存有一个虚拟地址空间。这意味着任何内存的地址都不是物理RAM位置,而是映射到磁盘页的位置。地址空间的虚拟化是由计算机的一个称为MMU(内存管理单元)的组件完成的
内存压力不会改变,因为操作系统会识别出您对
malloc
的大型调用不会完全放在RAM中。那么虚拟内存什么时候会变成RAM内存?例如,在Photoshop中,我可以轻松地使用几GB的内存,我的电脑会立即“感觉到”。当您将虚拟内存初始化为某个值时,如0
,如何判断虚拟内存何时是因为“真实”内存?@TagC198。您可以使用memset(ptr,0,size)
对其进行测试。是的,正如@JL2210所说,未初始化的内存只是由操作系统保留的,因此不会被占用。如果您使用calloc
,memset
,或开始向其写入内容,您将看到不同之处。