问题标签 [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.
delphi - delphi - 在关闭应用程序时终止所有线程(TThread)
我的应用程序是一个 tcp/ip 服务器,主线程只创建一次并一直在监听。当新客户端连接时,主线程创建TClientThread
类型的新线程。但是没有正在运行的客户端线程列表,因为这会使我的应用程序有点复杂......有没有办法在所有线程上执行“终止”方法,即使线程很忙(在我的情况下是“忙”意味着它正在等待数据,其中超时设置约为 30 秒......所以无论如何我都必须杀死它,而不是等待。)?简单的关闭应用程序似乎没有在线程上运行“终止”方法,最终导致 FastMM 报告内存泄漏......
delphi - FastMM svn version
I downloaded FastMM through an svn checkout. (instead of stable packaged version)
Can I use it (or is it safe to use) in my release builds?
I'm asking this as a seperate question as Rob Kennedy suggested.
delphi - Delphi:IdStack 中的内存泄漏,但谁使用 IdStack?
FAstMM 从 IdStack.pas 中的 TIdCriticalSection 报告内存泄漏。我知道这是故意泄漏,代码中记录了这一点。
我不明白的是,为什么 IdStack 包含在我的项目中。我怎样才能知道是什么单位把它拉进来的?
有没有办法使用delphi 2007附带的fastmm版本从报告中排除这种泄漏?
更新:有没有办法找到构建中包含的所有 pas 文件?
delphi - 从 FastMM 获得更长的堆栈跟踪?
当 FastMM 记录内存泄漏时,它包括返回 9 次调用的堆栈跟踪。问题是堆栈跟踪太笼统,无法轻松定位问题。跟踪中的最后一个函数调用至少被调用了 50 次,并且泄漏的对象是非常常见的。
我该怎么做才能使堆栈跟踪更长?
更容易定位泄漏的提示当然是受欢迎的,泄漏的对象主要是接口,所以它是交叉引用或未调用 _ReleaseRef 的东西。
我在 Delphi 7 上,使用 FastMM492。
delphi - 如何在 Delphi 中正确释放/完成 ActiveX DLL?
我们在这里使用了一个名为 ODNCServer 的类 - 在初始化时,TAutoObjectFactory
会创建一个对象:
现在FastMM抱怨内存泄漏,因为这个对象没有在任何地方释放。如果我添加这样的终结声明
然后对象被释放,但在弹出有关内存泄漏的 FastMM 对话框后,实际上,操作系统似乎正在卸载 DLL,而不是程序。的实例ODNCServer
是这样创建的
并像这样释放:
那么,有人知道我必须改变什么来摆脱内存泄漏吗?顺便说一句,我也尝试使用 FastMMRegisterExpectedMemoryLeaks
来注册并忽略泄漏,但这似乎不起作用。此外,即使这只是一种解决方法,我想知道正确的方法来做到这一点。
delphi - FastMM,用于动态加载 DLL 中泄漏的堆栈跟踪内存,使用运行时包编译
我正在使用 FastMM 和 JCL 调试信息来跟踪我的应用程序中的内存泄漏。但是我有插件,它们是在 Delphi 中编译的 dll,dll 和主应用程序都使用常见的运行时包。现在,当我关闭应用程序时,它会在文本文件中生成内存泄漏报告,这很好,但它只包含主应用程序的堆栈跟踪。如果插件 dll 发生内存泄漏,堆栈跟踪会导致 LoadPlugins;主应用程序中的程序!当然,我的插件包含 JCL 调试数据(它被插入到 .dll 二进制文件中)。
哪里有问题?那是因为运行时包的使用吗?还是我忘记启用/禁用的某个开关(定义)?提前致谢
delphi - 使用 FastMM 和 exitcode 检测内存泄漏
我有一个想法,可以在夜间自动构建中启用 FastMMs memleakreporting。消息框当然应该被禁用。如果存在内存泄漏,最简单的可能是应用程序退出代码 > 0。我做了一个快速测试,退出代码为 0,带有 memleak 和 FastMM。
所以我的问题是如何检测 FastMM 中是否存在 memleak 来设置退出代码?
c++builder - C++ Builder 2010 如何切换到 FASTMM
我有一些在 c++ builder 2009 中完成的项目,它们需要 borlandmm.dll 才能运行。我读过 c++ Builder 2010 默认使用 Fastmm,但在我的项目中似乎并非如此。他们仍然需要 borlandmm.dll
那么如何切换我的项目以使用 Fastmm 呢?
delphi - 为什么“菜单”单元过早完成?
我在启用 FastMM 和 FullDebugMode 的情况下测试了我的应用程序,因为我遇到了一些关机问题。
在解决了我自己的一堆问题之后,FastMM 开始抱怨在 TPopupList 中的释放对象上调用虚拟方法。我试图在使用中尽早移动菜单单元,以便最后完成,但它没有帮助。这是真正的问题,vcl 中的错误还是 FastMM 的误报?
以下是 FastMM 的完整报告:
我正在使用 Delphi 2007 和 FastMM 4.97。
Edit1:我认为这里的主要问题是为什么 Classes.StdWndProc 调用 Menus.TPopupList?在调试器中挖掘调用堆栈显示 System.FinalizeUnit 被调用了 3 次,然后它转到 SysUtils.ShowException,它尝试显示 MessageBox,在一堆 user32.dll 调用之后,我们最终到达 classes.StdWndProc。
Edit2:我遇到了接口问题,解决了这个问题。带有接口的对象被释放,但引用被释放。当接口被释放时,发生了一个我最初以某种方式忽略的异常。释放界面可能会损坏导致所有其他问题的东西。
delphi - 没有 FullDebugMode 的 FastMM 日志到文件
我想获得在应用程序关闭时显示的 FastMM 内存泄漏报告,但在文件而不是对话框中。这个想法是在发布版本中使用它,因为我无法重现泄漏。但是,我宁愿不使用似乎需要记录到文件的 FullDebugMode。
我错过了什么还是不支持?