[Vm-dev] Re: Too many full GCs in Cog/Spur ... while just drawing GUI ...

tim Rowledge tim at rowledge.org
Fri Apr 8 17:47:31 UTC 2016


> On 08-04-2016, at 7:33 AM, Bert Freudenberg <bert at freudenbergs.de> wrote:
> 
> Yes, the number of full GCs goes down. But why not to zero? I cannot understand why we cannot find a large-enough “new space size” so that the working set is fully kept in there. Redrawing a couple windows should not produce any long-lived objects that trigger a full GC every second.

Redrawing seems likely to be using quite a lot of assorted bitmaps (no, I didn’t dig around to be sure so may  be wrong) and since they’re large non-pointer objects I suspect they’d go straight to hell. Ah, old-space. Thus requiring the full gc to get rid of them.

And as a small extra datum, Marcel’s original example code answered ‘3’ on My Pi3. However, since it is about 10% the performance of a typical modern laptop I’m guessing we only run the test 10% as many times. So, trying with  'benchFor: 50' instead answers 30/42/45, which indicates a relatively linear relationship to the number of #imageForm executions.

Running a TimeProfileBrowser on it shows an astonishing 21,000 tenures and 247 incremental collections, with around 50% of total run time going to gc. Fully half the remaining time appears to go on drawing the WindowButtonMorph, whatever that is.

tim
--
tim Rowledge; tim at rowledge.org; http://www.rowledge.org/tim
Common sense – so rare it’s a goddam superpower



More information about the Vm-dev mailing list