问题标签 [fastmm]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
6 回答
2013 浏览

delphi - FastMM 是否检测到所有内存泄漏

最近有人建议(我的程序从不释放内存。为什么?)我的程序泄漏了一些内存。我将 FastMM 设置为积极,当我关闭程序时它不会报告内存泄漏。

无论如何,我想知道是否存在 FastMM 未检测到的内存泄漏?

更新:我个人不使用 Win API 来分配内存。但我担心我使用的一些 3rd 方组件(不是很多)可能会使用它。你能告诉我 FastMM 无法拦截的所有可能的 API 调用吗?我将在我的代码中搜索它们。谢谢。


Delphi 7, Win 7 32 bit
FastMM 4.97
我对接口不感兴趣。

0 投票
5 回答
2653 浏览

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

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

正常行为?

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

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

谢谢


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

我的程序永远不会释放内存。为什么?
如何说服内存管理器释放未使用的内存

0 投票
3 回答
585 浏览

delphi - FastMM 突然报告 Graphics32 内存泄漏

我有一个空项目(它只包含一个表单)。如果我将此行添加到项目'USES GR32_Image;' 并运行应用程序,FastMM 在程序中显示泄漏。FastMM 设置为完全调试。我的程序中没有代码 - 除了 Delphi IDE 生成的代码和“使用 gr32”行。

报告毫无意义。这是完整的日志:http
://pastebin.com/Yhev3rJ2 这里是源代码: http: //pastebin.com/VjRrRiS8

我以前使用过 Graphics32 单元,从来没有遇到过问题。为什么我有这个泄漏以及为什么 FastMM 无法生成正确的报告?

0 投票
2 回答
1842 浏览

delphi - FastMM4、Delphi6、TApplication 泄露?

我用 D6 检查了 FastMM4。当我使用“表单”调试一个简单的应用程序时,我每次都会得到 3 行内存泄漏。

此应用程序已泄漏内存。小块泄漏是(不包括指针注册的预期泄漏):

13 - 20 字节:TObjectList x 3,未知 x 3 29 - 36 字节:TWinHelpViewer x 1 37 - 52 字节:THelpManager x 1

这是正常的吗?

是什么原因造成的?

谢谢:dd

0 投票
2 回答
922 浏览

delphi - 如何在 delphi 专家(dll)中使用 FastMM

我做了delphi专家(dll - delphi 5)。我想测试我的专家是否有内存泄漏。如何将 FastMM 用于 dll 专家?是否可以使用 fastmm(用于我的 dll)而不是标准内存管理器?

0 投票
3 回答
2586 浏览

delphi - FastMM 是否有可能错误地报告访问冲突?

我有一个复杂的应用程序,在正常编译时按预期工作,但在使用 FastMM 4.97(最新版本)编译时关闭表单会产生访问冲突。AV 发生在消息分发尝试处理用于已销毁表单上的按钮的消息时。我还为该项目启用了 Eurekalog 6.1.0.1(最新版本)。在禁用 FastMM 的 FullDebug 模式的情况下执行相同的代码时,它不会捕获任何运行时异常。

是否有可能在某些情况下 FastMM 可以改变 EXE 的行为,从而导致或错误地报告访问冲突?

这是 FastMM 错误报告:

0 投票
1 回答
340 浏览

delphi - 如何从我的项目文件中删除 FastMM497?

在我的项目文件上使用 FastMM 运行了一周后,我现在已经完全完成了我的程序,并且据我所知,除了 3 个由 FastMM497 引发的错误消息之外,我已经删除了所有错误消息。现在,我想从我的程序中删除 FastMM 并在没有它的情况下运行。我可以这样做吗?如果我删除它并运行我的程序,我的程序会开始泄漏内存吗?据我所知,我已删除并将我的项目选项设置更改回以前的方式。

但是,当我运行可执行文件时,我确实注意到我的程序要大得多。最初,我的程序启动时大约为 5,000KB 到 6,000KB。通过 FastMM 工作后,现在它在任务管理器中约为 21,000KB。我看对了吗?

我可以将 FastMM497 留在我的程序中并按原样部署给我的用户吗?

0 投票
3 回答
1562 浏览

delphi - Delphi:FastMM 虚拟内存管理参考?

我最近遇到了一个问题(请参阅我的最后一个问题),这让我仔细研究了我的 Delphi 应用程序中的内存管理。在我第一次探索之后,我有两个问题。

我已经开始使用 FastMMUsageTracker,并注意到以下内容。当我打开一个应用程序使用的文件(它还创建一个表单等)时,应用程序可用虚拟内存的变化与“FastMM4 分配”内存的变化之间存在显着差异。

首先,我对术语有点困惑:为什么会有一些 FastMM 分配的内存和一些“系统分配”(和保留)的内存?既然 FastMM 是内存管理器,那为什么系统要负责分配一些内存呢?

另外,我怎样才能获得有关哪些对象/结构已分配该内存的更多详细信息?VM 图表仅用于显示“系统分配”、“系统保留”或“FastMM 分配”的内存量,但没有链接到需要该内存的实际对象。例如,是否有可能在执行过程中获得类似于 FastMM 在关闭应用程序时生成的报告?FastMM 显然将这些信息存储在某处。


作为对我的奖励,如果人们可以推荐有关该主题的良好参考资料(书籍,网站),我将不胜感激。网络上有大量信息,但通常是针对特定案例和面向专家的。

谢谢!

PS:这不是寻找泄漏,那里没有问题,只是试图更好地理解内存管理并为未来抢占先机,因为我们的应用程序使用越来越多的内存。

0 投票
4 回答
2382 浏览

delphi - FastMM:总分配内存

如何获得 FastMM 分配的内存总量?

我试过了:

这是正确的吗?

无论如何,它会返回一些奇怪的东西。它比我在 Windows 任务管理器中看到的值小 5 倍。我相信 Delphi 应用程序分配的内存量等于 FastMM 分配的内存加上一些系统开销。我错了吗?

0 投票
1 回答
367 浏览

delphi - Delphi 2009 中的 OpenGL 3.2 在 FullDebugMode 中使用 FastMM 4.97 与 UBO 的问题

我正在使用 Delphi 2009 中的 OpenGL 3.2 应用程序。当使用带有 FullDebugMode 定义的 FastMM 4.97 时,UBO 无法正确获取数据。使用 FullDebugMode undefined 一切都像魅力一样。

示例:在我们的渲染帧类中设置指向两个私有整数字段 FWidth 和 FHeight 的视口尺寸。

这几天我一直在纠结这个问题,我真的不知道如何继续。我不希望这里有完整的 OpenGL 支持,但希望有人可以根据在 FullDebugMode 下运行与不运行之间的已知差异提出一些建议。

项目设置:

操作系统是 Windows 7 64 位。

编辑:找到了!它与OpenGL完全无关。在我们的代码库的其他地方,一个函数返回了一个 PAnsiChar 使用Result := @AnsiString(Object.Name)[1];This 在大部分时间正常运行,因为内存只被释放但没有改变。在 FullDebugMode 中,数据在释放时被 $80 序列覆盖。