toStringz note about keeping references
Jonathan M Davis
jmdavisProg at gmx.com
Sun Oct 14 16:06:47 PDT 2012
On Monday, October 15, 2012 00:51:34 Andrej Mitrovic wrote:
> On 10/15/12, Jonathan M Davis <jmdavisProg at gmx.com> wrote:
> > Anything and everything with no references to it any
> > longer should be up for collection.
>
> I think this is fuzzy territory and it's a good opportunity to
> properly document GC behavior.
I don't see how it could be fuzzy at all. It makes no sense whatsoever to keep
_any_ data around once it has nothing referencing it. The constness of an
object should have _zero_ affect on its scope or lifetime. immutable _does_
implicitly make a variable shared, but that has nothing to do with the
object's lifetime. That just makes it so that it can be used across threads.
Once no more threads reference it, it should collected. Keeping the data
around would simply result in the effective equivalent of leaked memory.
> For example, TDPL states that immutable data is always available, and
> that a user should treat such data as if it existed throughout the
> lifetime of the program.
I'd have to see exactly what TDPL says to comment on that accurately, but if
it means that all immutable data is expected to be around for the entire
lifetime of the program, then that's a huge problem. If it's something that
was specifically allocated in ROM when the program started, then that makes
sense (e.g. string literals on Linux), but nothing allocated on the normal GC
heap should be kept alive simply because it's immutable. References to it must
exist.
- Jonathan M Davis
More information about the Digitalmars-d-learn
mailing list