Delphi Win64使用TThread.Synchronize无泄漏但内存增长及碎片优化咨询
内存碎片定位与优化问题咨询
核心问题与测试背景
- 实际应用中,任务管理器或
GetProcessMemoryInfo->PagefileUsage显示内存持续增长,但FastMM4、Eurekalog均未检测到任何对象泄漏。 - 为定位问题制作的最小测试用例流程:
- 启动时通过
GetMemoryManagerState()和GetProcessMemoryInfo()检查内存占用; - 创建10000个线程并分配内存;
- 所有线程终止后释放所有分配的内存;
- 未点击停止按钮则重复步骤2。
- 启动时通过
- 测试验证结果:经FastMM全调试模式、Eurekalog多次验证,无对象泄漏,但首次运行后内存骤增近170MB。
已排查进展
更新1:测试用例中的内存增长问题已确认由内存碎片导致,根源是System.SysUtils.EventCache,添加指定代码后可消除该测试中的内存增长,但实际应用中无效,推测存在更多碎片来源。
咨询内容
有哪些工具与技术可用于定位和优化内存碎片?目前仅找到FastMM4的FastMM_LogStateToFile,它能显示Overhead和Efficiency值,但无法定位碎片产生的具体原因。
内容的提问来源于stack exchange,提问作者Sargis
相关产品推荐
相关产品推荐

