当前位置:  开发笔记 > 编程语言 > 正文

在64位土地上堆积碎片

如何解决《在64位土地上堆积碎片》经验,为你挑选了1个好方法。

在过去,当我处理长时间运行的C++守护进程时,我不得不处理堆碎片问题.保持我的大量分配池的技巧是必要的,以防止耗尽连续的堆空间.

这仍然是64位地址空间的问题吗?Perf对我来说不是一个问题,所以我宁愿简化我的代码而不再处理像缓冲池这样的事情.有没有人有关于这个问题的经验或故事?我正在使用Linux,但我想很多相同的问题都适用于Windows.



1> Andrew Tomaz..:

这仍然是64位地址空间的问题吗?

不,这还不是问题.

你是正确的,它是32位系统上的一个问题,但它不再是64位系统的问题.

64位系统上的虚拟地址空间非常大(目前x86_64处理器上的时间为2 ^ 48字节,并且随着新的x86_64处理器问世,设置逐渐增加到2 ^ 64),连续的虚拟地址空间不足由于碎片几乎是不可能的(除了一些非常人为的极端情况).

(由于64是"仅"双32的事实导致直觉的常见错误,这导致人们认为64位地址空间大约是32位地址空间的两倍.实际上是一个完整的64位地址空间是32位地址空间的40亿倍.)

换句话说,如果你的32位守护进程花了一周的时间来分段到一个无法分配x字节块的阶段,那么至少需要一千年时间来分割今天的x86_64处理器48位地址空间,以及将未来计划的完整64位地址空间分割需要8000万年.

推荐阅读
跟我搞对象吧
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有