[Vm-dev] Garbage collector issue

Pavel Krivanek pavel.krivanek at gmail.com
Thu Jan 26 14:27:01 UTC 2017


Taking back.

I tried it in older versions up to Squeak 3.9. It behaves the same way with
the script I sent but it is not good way how to show it. Because in older
versions if you disable explicit garbageCollect after every 100 cycles, the
number of objects is decreased spontaneously after a while.
But on the current VM it grows continuously.

-- Pavel

2017-01-26 14:58 GMT+01:00 Pavel Krivanek <pavel.krivanek at gmail.com>:

> Strange, in Pharo 3 it behaves the same way. So probably not directly Spur
> related.
>
> -- Pavel
>
> 2017-01-26 14:52 GMT+01:00 Clément Bera <bera.clement at gmail.com>:
>
>>
>> Is it the same behavior in Pharo 3 ?
>>
>> Just wondering if this is a Spur issue or if it is non related to Spur.
>>
>> On Thu, Jan 26, 2017 at 2:38 PM, Pavel Krivanek <pavel.krivanek at gmail.com
>> > wrote:
>>
>>>
>>> Hi,
>>>
>>> in Pharo and in Squeak, if you try to print:
>>>
>>> Point allInstances size.
>>>
>>> several times, you will get fastly growing number of Point instances in
>>> most cases. But when you do:
>>>
>>> Smalltalk garbageCollect. Point allInstances size.
>>>
>>> The number of instances is quite stable.
>>>
>>> I realized that about every 5 milliseconds two new Point instances are
>>> created and not collected in reasonable time. I tried to find what points
>>> to them and I realized that nothing. That two instances contain display
>>> size so it was easy to find the place where these points are created. In
>>> Pharo it is in
>>>
>>> MorphicUIManager>>#checkForNewDisplaySize
>>>
>>> "Check whether the screen size has changed and if so take appropriate
>>> actions"
>>>
>>> Display extent = DisplayScreen actualScreenSize ifTrue: [^ Display].
>>> DisplayScreen startUp.
>>> World restoreMorphicDisplay.
>>>
>>> As you can see in the code, the two point instances are only very
>>> temporary objects. And with some experiments I realized that that behavior
>>> is not Point specific (eg. some problem with the @ primitive). Because if
>>> you replace the code of the method with only Object basicNew, the growth of
>>> Object instances is similar. See the attached script.
>>>
>>> pharo-ui Pharo st script2.st
>>>
>>> Cheers,
>>> -- Pavel
>>>
>>>
>>>
>>>
>>>
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/vm-dev/attachments/20170126/a778cef4/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: script4.st
Type: application/octet-stream
Size: 689 bytes
Desc: not available
URL: <http://lists.squeakfoundation.org/pipermail/vm-dev/attachments/20170126/a778cef4/attachment.obj>


More information about the Vm-dev mailing list