All Blog Posts  |  Next Post  |  Previous Post

Runtime memory profiling and more for Delphi with the new TMS MemInsight


Thursday, February 3, 2022

TMS Software Delphi  Components

We are very excited to announce a new product TMS MemInsight in the TMS family that results out of the collaboration with long-time Delphi expert Stefan Meisner and the TMS team. Stefan has a deep knowledge of Delphi technical internals to monitor memory allocation, getting call-stack information, exception handling, challenges with multi-threaded development and much more. Together with our focus on bringing easy to use component-based and as low-code as possible solutions and tools, we strongly believe that not only for TMS MemInsight but also future product ideas, we can continue to bring more value to you and come to the 1 + 1 = 11  winning formula.

TMS MemInsight v1.0

Whereas most memory allocation tracking tools are static, that is producing a report on application close or upon application crash, the difference with TMS MemInsight is that it is a dynamic memory allocation profiling tool that is used at run-time. This means that also while your application is running without issues, you can monitor where there are possibly performance issues due to consuming huge amounts of memory. 

With TMS MemInsight, you can continuously inspect memory allocation during run-time and get information on classes for which memory is allocated and get the class info, call stack, thread, property inspection, memory dump etc... of everything. With a statistics view, it is easy to see where the majority of allocated application memory is going to.  When you run the tool in debug mode with a map file, it is able to directly bring you to the position in the source code in the Delphi IDE of where memory was allocated.
TMS MemInsight also allows to provide additional information, most importantly the call stack, when exceptions occur. This allows you to understand better where exceptions come from and remedy these.

TMS Software Delphi  Components

Getting started

To get started with TMS MemInsight is as easy as dropping the TTMSMemInsightProfiler component on the form. With this component on the main form of the application, it is default configured to immediately show the profiler tool when you start your application. Or you can also choose to start the profiler only from code when you need it. You can control at component level or in code, what monitoring tools are active and live. There is not much more to do to get a new deep view on the internals of your application!

Discover it also for yourself in this video:

What's next

We have plenty of ideas of possible future directions of not only the TMS MemInsight tool but also new complimentary tools. But of course, as always, it is your wishes and requests for specific functionality that steer our development priorities. We look forward to hear from you what enhancements can be done in TMS MemInsight to make your development even easier and what other development tools you further wish. Contact us by email or leave a comment here. 

Bruno Fierens


This blog post has received 15 comments.

1. Thursday, February 3, 2022 at 4:53:41 PM

Does this work with FMX? Profiling mobile apps?

Leahy Michael

2. Thursday, February 3, 2022 at 4:58:20 PM

VCL only at this moment.

Bruno Fierens

3. Thursday, February 3, 2022 at 5:17:10 PM

Hello, i found the MemInsight very interesting. Does it work for 64bit apps?

Macan Jan

4. Thursday, February 3, 2022 at 5:23:32 PM

Yes, it supports 64bit apps

Bruno Fierens

5. Thursday, February 3, 2022 at 6:22:31 PM

Do you have any plans to support Lazarus?


6. Thursday, February 3, 2022 at 7:35:05 PM

Add it as feature request

When there is sufficient demand, it will be considered.

Bruno Fierens

7. Thursday, February 3, 2022 at 8:10:07 PM

Does it possible add support for D2010, even classic D7, because D2010 is my favrate version and it has enough feature likes RTTI, unicode and others. In the other cases, TMS MemInsight is a sperate product, not relying on the other suite, so it should can support the older version and it should! Please, thanks!


8. Thursday, February 3, 2022 at 8:18:46 PM

It is always a matter of effort vs interest. Just testing like 20 IDEs, ensuring form DFM files are compatible across 20 IDEs, is all a huge amount of work. We''ve seen the use of old Delphi versions like Delphi 7 that is 20 years old, significantly decrease in the last years.

With the registered (full source) version, you can use it in D7 though.

Bruno Fierens

9. Thursday, February 3, 2022 at 8:31:15 PM

Thanks. I considered that it is just a tool like FixInsight. If it is a component with the full source, normally I can adapte it myself. I don''t know " DFM files are compatible" mean what, but if juste for building, you can use the batch file. It is so easy and so fast, but only after 10 years I have learned how building the projects using the command line.
Anyware, thanks for your excellent work and so fast your reply in the night.


10. Friday, February 4, 2022 at 6:18:41 AM

Please support XE6 in your next release!

Lex Edmonds

11. Friday, February 4, 2022 at 9:20:09 AM

Looks great.

Is is possible to see whether and when allocated memory/objects are released?

Michael Hartrich

12. Friday, February 4, 2022 at 9:47:22 AM

You mean to get a timestamp or other information?

Bruno Fierens

13. Thursday, February 10, 2022 at 10:19:59 AM

Confused by the title graphic .. surely 1+1=10?

Could this be used for exception handling only? So in debug we would want full profiling available but on release the advanced exception handling (with reporting back to us) would be helpful. We have some systems that use MADExcept for that currently.

Also for logging we have been wanting to include in the code that logs the message the unit name, function name and line number which is standard information with a C compiler but we have not been able to get it in Delphi - would this help?

Lambden Rob

14. Thursday, February 10, 2022 at 2:34:09 PM

Could you please repost your question to the support forum at
so I can give you more detailed explanations (which also might be of sue for others) To give a short answer: yes, you can use it for exception handling only while the standard memory manager is being used. Also there''s a utility function to log a methods name.

Bruno Fierens

15. Tuesday, September 6, 2022 at 10:48:13 PM

Would this support profiling an ISAPI dll running under IIS 7.x ?

Moorhouse David

Add a new comment

You will receive a confirmation mail with a link to validate your comment, please use a valid email address.
All fields are required.

All Blog Posts  |  Next Post  |  Previous Post