You need a profiler, but even this will not be enough in many places and cases. In addition, in your case, you will need a full-featured AQTime, rather than the lite version that comes with Delphi XE and XE2. (AQTIME is extremely expensive and annoyingly node-locked, so don't think I'm a smartbear shill.)
The fact is that people often mistakenly accept the AQTime Allocation Profiler as the only way to find leaks. He can also tell you where your memory goes, at least within the instrument. While working and using a large amount of memory, I click Run → Get Results.
Here is one of my applications - this is a profile in AQTime with its distribution profile, showing which class allocates the number of instances on the heap and how much memory they use. Since you are reporting low usage of the Delphi heap using FastMM, this suggests that most of AQTime's capabilities for parsing by the name of the delphi class will also be useless to you. However, using AQTime events and triggers, you can figure out which areas of your application are causing "memory usage", and when it happens, what are the costs. Real-time AQTime may be enough to help you narrow down the cause, even if it cannot find for you which function call causes the most memory usage.


Column names include an "Object Name", which includes such things: * All delphi classes, as well as their instance counter and heap usage. * Virtual memory blocks allocated using Win32 calls.
It can detect the allocations of the Delphi and C / C ++ libraries on the heap and can see certain memory allocations of the Windows-API level.
Pay attention to the live number of objects, the amount of memory from the heap used.
Usually I try to determine the cost of memory for a specific operation, measuring the memory usage of the heap before and immediately after some expensive operation, but before clearing (freeing) the memory from this expensive operation. I can set event points inside AQTime, and when any particular method hits or the flag is turned on by me, I can measure it before and after the values, and then compare them.
Only FastMM cannot even determine the non-delphi distribution or heap distribution that is not managed by FastMM. Therefore, AQTime is not limited.