Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Mailing lists / fpc-pascal / 2018-10

instance memory usage

3 messages · 2 people · –

Reply by email Subscribe to this list Your subscription

Read-only archive. Use j and k to move between messages.

Marc Santhoff

Hi,

from testing a while ago I remember the following:

The memory used by a class instance is composed of
1. the size ".instanceSize()" gives back
2. the memory used by other variables and maybe class instances referenced by pointers and owned by the instance in question
3. strings are (to be) included in 2., string types are in fact references aka pointers

The second clause is sort of "by definition", but I do define like that in this case.

Is that listing correct and complete?

TIA,
Marc

Marc Santhoff

Reply by email

Sven Barth
to Marc Santhoff
Marc Santhoff wrote 15 lines
Hi, from testing a while ago I remember the following: The memory used by a class instance is composed of 1. the size ".instanceSize()" gives back 2. the memory used by other variables and maybe class instances referenced by pointers and owned by the instance in question 3. strings are (to be) included in 2., string types are in fact references aka pointers The second clause is sort of "by definition", but I do define like that in this case. Is that listing correct and complete?

The size InstanceSize() returns is the pointer to the VMT plus the size of any field in the class or any of its parent classes as if it would be a record (keep in mind that class references are merely pointers, so a class having another as a field is merely a pointer, not its InstanceSize(), the same is true for e.g. Ansi-/UnicodeString).

Regards,
Sven

Reply by email

Marc Santhoff
to Sven Barth
Sven Barth wrote 23 lines
Am 20.10.2018 um 20:09 schrieb Marc Santhoff: > Hi, > > from testing a while ago I remember the following: > > The memory used by a class instance is composed of > 1. the size ".instanceSize()" gives back > 2. the memory used by other variables and maybe class instances referenced > by pointers and owned by the instance in question > 3. strings are (to be) included in 2., string types are in fact references > aka > pointers > > The second clause is sort of "by definition", but I do define like that in > this case. > > Is that listing correct and complete? The size InstanceSize() returns is the pointer to the VMT plus the size of any field in the class or any of its parent classes as if it would be a record (keep in mind that class references are merely pointers, so a class having another as a field is merely a pointer, not its InstanceSize(), the same is true for e.g. Ansi-/UnicodeString).

OK, so my list is correct in general. The only thing missing would be the code, but what I need to count is the data size when having lots of instance.

Regards, Sven

Many thanks.

Marc Santhoff

Reply by email