gpt4 book ai didi

delphi - 您的程序需要多少内存? (FastMM与Borland MM)

转载 作者:行者123 更新时间:2023-12-03 18:15:23 28 4
gpt4 key购买 nike

最近,我在程序中看到了一种奇怪的行为。创建大量对象(500MB RAM)然后释放它们之后,程序的内存占用空间不会恢复到其原始大小。它仍然显示占用空间为160MB(专用工作集)。

正常行为?

Borland的内存管理器的行为不是这样,因此,如果可能,请确认(或确认)这对于FastMM是正常的行为:如果您有一个方便的程序,可以在其中创建一个相当复杂的MDI子级(包含多个控件/对象),可以您在一个循环中(同时)在内存中创建了250个该MDI子实例的实例,然后全部释放它们并检查内存占用量。请确保这些MDI子项至少消耗200-300MB或RAM。

特别是那些仍在使用Delphi 7的用户可以通过临时禁用FastMM来看到差异。

谢谢



如果有人感兴趣,特别是如果您想证明这不是内存泄漏(我希望这不是我的代码中的内存泄漏-这也是本文的重点之一:检查这是否是我的错),以下是原始讨论:

My program never releases the memory back. Why?
How to convince the memory manager to release unused memory

最佳答案

IIRC,Delphi内存管理器不会立即将释放的内存返回给操作系统。

内存按大小分别分配的大块,小块和大块分配。
这些块的内容放完后会保留一段时间,以便在以后再请求分配时使其立即可用。

这限制了成功分配多个对象所需的系统调用量,并有助于避免堆碎片。

关于delphi - 您的程序需要多少内存? (FastMM与Borland MM),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4499260/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com