[Vm-dev] Garbage collector issue

Pavel Krivanek pavel.krivanek at gmail.com
Thu Jan 26 14:49:07 UTC 2017


Well,

I tried it again on Squeak an Pharo and objects are garbage collected after
about 90 seconds on Pharo, on Squeak sooner. So probably only a false
alarm, sorry. I'll do some next checks.

-- Pavel

2017-01-26 15:28 GMT+01:00 Bert Freudenberg <bert at freudenbergs.de>:

>
> What exactly is the behavior in Pharo?
>
> In a recent Squeak on Spur I don't see anything unusual. In my image there
> are 9 Object instances. Then I added the "Object basicNew" in
> #checkForNewScreenSize and the instance count of Object starts increasing
> rapidly until the next incremental GC, which happens about every 10
> seconds, then the count drops and starts increasing again.
>
> I verified it like this:
>
> (UpdatingStringMorph on: Object selector: #instanceCount) openInHand
>
> ... which continuously shows the number of instances, and
>
> (UpdatingStringMorph on: [Smalltalk vmParameterAt: 9] selector: #value)
> openInHand
>
> ... which shows the number of incremental GCs.
>
> Is it possible that in your image there is so little garbage generated
> that no incremental GC is triggered for a long time? My image has dozens of
> windows and stepping morphs. I'd try to log vm param 9 along with your inst
> count.
>
>
> - Bert -
>
> On Thu, Jan 26, 2017 at 2:58 PM, Pavel Krivanek <pavel.krivanek at gmail.com>
> wrote:
>
>>
>> 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/e4e46549/attachment-0001.html>


More information about the Vm-dev mailing list