malloc()在macOS上的64位进程上有哪些限制?
一位程序员同事声称,由于内存碎片,他的64位Mac程序一直在耗尽内存。我反驳说,这是不可能的,因为我知道程序总共只分配了大约1-2 TB的内存,而且大多数分配都在40-200字节的范围内,即使它们是数百万字节 我认为,由于内存分配器无法在地址空间中找到所请求大小的可用间隙,因此不可能以分配请求失败的方式分割64位地址空间 我的信念是基于这样的理解:几乎整个地址空间(64位)都是可用的。也许只有62位 因此,我想知道是否还有其他限制可能导致他的问题。例如,整个64位地址空间真的可用吗,或者只有更小的地址空间子集可用于分配?或者对虚拟页面的总数有限制吗 苹果公司似乎没有提供这方面的任何信息 我在中找到了一些关于限制的提示,但参考文献不支持这样的建议,例如总限制在128 TB左右。例如,该限制是指可以分配给任何进程的总量,还是指所有进程的总量,是指分配的总量,还是指可以分配的地址范围 也就是说,如果128 TB是malloc可以返回的总地址范围,并且如果这是所有进程的一个范围,那么我可以想象这会导致上述问题。但真的是这样吗 最终的答案可能在达尔文的源代码中找到。有人掌握了它并且可以在这里总结它吗malloc()在macOS上的64位进程上有哪些限制?,macos,memory-management,malloc,virtual-memory,Macos,Memory Management,Malloc,Virtual Memory,一位程序员同事声称,由于内存碎片,他的64位Mac程序一直在耗尽内存。我反驳说,这是不可能的,因为我知道程序总共只分配了大约1-2 TB的内存,而且大多数分配都在40-200字节的范围内,即使它们是数百万字节 我认为,由于内存分配器无法在地址空间中找到所请求大小的可用间隙,因此不可能以分配请求失败的方式分割64位地址空间 我的信念是基于这样的理解:几乎整个地址空间(64位)都是可用的。也许只有62位 因此,我想知道是否还有其他限制可能导致他的问题。例如,整个64位地址空间真的可用吗,或者只有更小