内存碎片是否导致内存异常



内存碎片是否导致"内存异常"或程序,系统可以在运行时处理此问题?

是的,从理论上讲,片段可能会导致异常异常。假设您进行大量的小对象分配,这些小物体主要填充内存,然后删除其他所有对象。这将产生大量的自由记忆,但是它们都会是很小的块 - 这是极端的碎片。如果您尝试分配比任何一个块大的对象,则分配将失败。

运行时系统通常无法修复此操作,因为在大多数实现中,指针中的地址无法自动更改。因此,无法重新安排分配以巩固所有自由空间。

良好的堆管理实现旨在使这不太可能。一种常见的技术是将不同的内存领域用于不同的分配大小。小型分配来自一个区域,来自另一个区域的中等分配以及来自自己地区的大型分配。因此,如果您在小区域中得到很多碎片化,则不会引起大型分配的问题。

最新更新