I have mixed feelings about this proposal - from one point it's quite
neat - ability to mark circular references for the memory manager so
it can free them sounds very delicious, especially for some cases. I
had run into my own bunch of problems with memory in PHP in the past
and right now I'm running a daemon written in PHP in production on
5.3.6. Careful construction and knowledge that circular references
actually do harm I did add safeguards that actually clean up the
objects in recursive manner (and objects have internal flags that
cleanup has been initiated - that way I make sure I cleanup the same
object only once). That sort of planing at the design stage makes it
far more friendly with memory, so it doesn't mean that PHP should have
soft references.

My opinion is that if this can be done without using significant
resources and will not have major issues while implementing - it can
be added, otherwise just skip it - better off fixing bugs and
optimizing :)

2011/8/6 Lars Schultz <lars.schu...@toolpark.com>:
> Am 06.08.2011 02:14, schrieb Hannes Landeholm:
>>
>> Yeah I think there's a lot of misunderstandings going on with weak/soft
>> references and how the garbage collector works. Weak/soft references is
>> not
>> some kind of solution to the cyclic reference problem. The GC takes care
>> of
>> that already. You can use whatever OOP patterns with whatever reference
>> graphs you like Lars, the GC will free the entire structure as soon as the
>> cyclic collector runs after you are not referencing it anymore. You might
>> have become a bit confused with my last post where I explained how one
>> could
>> theoretically hack together a soft reference implementation by using weak
>> references and some properties of cyclic collection. Also property access
>> performance is off-topic.
>
> I did not misunderstand how weak/soft-references or php's new GC works.
>
> Having a GC collect circular references is neat, but if I remember
> correctly, collecting them (which is why there are other, faster methods but
> which require more memory) is neither simple nor fast (whatever that means)
> so...if I can assist the GC by clearly stating that my child-objects may be
> collected as soon as they and their parent are not referenced from userland
> anymore thus not requiring the GC and thus freeing memory as soon as
> possible,...seems like an optimization worth thinking of. Especially if I
> tend to have vast structures with hundreds of objects.
>
> In 5.2 (we can't move our project to 5.3 yet because of a BC issue) i had to
> manually clear those cycles before dropping the last userland reference to
> the tree of objects because otherwise I'd run into memory problems when
> processing alot of those trees.
>
>
> --
> PHP Internals - PHP Runtime Development Mailing List
> To unsubscribe, visit: http://www.php.net/unsub.php
>
>

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to