Objects or instances

Why we renamed some features in ANTS Memory Profiler 7

When you are designing a complex product, it is important to ensure that terminology is both consistently used and unambiguous. This helps to avoid confusion amongst users and so contributes to that mass of small things that combine to make the difference between software which is a pleasure and a pain to use.

Red Gate’s ANTS Memory Profiler is a typical example of a complex product and, for some time, there has been a simmering debate amongst its developers as to whether it is more appropriate to refer to ‘objects’ or ‘instances’ of classes being held in memory. Of course, technical correctness – although important in memory profiling – is not the only variable at play. We also need to ensure that our terminology is familiar to users, being especially careful not to use terms differently for the way that they are used by Microsoft and in textbooks on .NET Memory usage.

Within linguistics, it is generally accepted that language abhors synonymy. It is exceedingly rare (if, indeed, it is ever possible) for two words to share exactly the same meaning and usage. It was on these grounds that I decided to spend a couple of hours investigating how we (Red Gate), Microsoft, our competitors, and our customers use these two words.

The conclusion of this research was that:

  • ‘instance’ is a relatively-rarely used term in memory management, but when it is used, it refers to specific instances of a specified class.
  • ‘object’ is much more common, but has a less specific meaning than ‘instance’. The particular class involved is often not described.

We therefore made a small number of changes to the product, which you might, or might not, have noticed. For example, the Object Retention Graph in ANTS Memory Profiler 6 becomes the Instance Retention Graph in ANTS Memory Profiler 7:


ANTS Memory Profiler 6
ANTS Memory Profiler 7

This is because the Instance Retention Graph shows the retention for a particular instance of a previously-selected class.

On the Filter panel, however, you will notice that we continue to use the word ‘Object’ in the various filter names:


This is because these filters filter the Class List to display objects which can be objects of any class.

Do these names matter? There would certainly be a case for suggesting that changing the name of a feature is potentially confusing for some users, or conversely that a simple edit like this is not a big deal.

Memory profiling is a complicated issue. Whilst we go to great efforts to make ANTS Memory Profiler as useable as possible, at the end of the day you need to have a minimal amount of domain knowledge in order to use the tool effectively. By being a lot more accurate in our use of language, and by creating more educational material over the coming months, we therefore hope that we can help you to use the product in a more efficient manner, reaching results faster.