Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [mat-dev] Memory Analyzer 1.12 and Eclipse 2021-06

> OK, I did the investigation on the retained set issue, and I was a
> little hasty; it was actually some code I had in development on my end
> related to memory mapping changes. My 'blocker' is safe to ignore.
> 
> On Fri, Apr 30, 2021 at 10:01 AM Jason Koch <jkoch@xxxxxxxxxxx> wrote:
> >
> > Agree w/ plan for Java 11.
> > - From my pov the GarbageCleaner improvements are isolated enough that
> > if we want to, we can ship them.
> >
> > - The memory mapping is technically viable but I think it would be
> > good to get some other opinions, think about a strategy for our users,
> > etc. This would require a shift for user configuration between heap
> > and disk IO. It might need some heuristics to automatically decide
> > which to use, or feature flags to allow user control.
> >
> > - I see one issue that (imo) is a blocker, I think this needs some
> > further investigation, as I am seeing heaps with incomplete retained
> > sets especially from threads in
> > flight:https://bugs.eclipse.org/bugs/show_bug.cgi?id=569223
> >
> > Thanks
> > Jason
Thanks for the update on Bug 569223.
I'm still looking at the garbage cleaner improvements but I don't think 
they are quite ready yet.
The object marker uses the Java Fork/Join library, which is good, but I 
don't know the worst case memory consumption. The previous marker had a 
natural limit of one int array entry for each heap object. The new one 
stores an outbound array as a work unit, which has the advantage of 
packing more work into one ForkJoin item. However if there was a heap dump 
with lots of object arrays 4 levels deep from the GC roots then it would 
recurse to that level, then queue all those outbounds arrays, which 
potentially could be much bigger than just the number of objects in the 
snapshot.

I got a bit sidetracked by Bug 573258 
https://bugs.eclipse.org/bugs/show_bug.cgi?id=573258 as I kept on finding 
other nice to have items.

I think this is a worthwhile enhancement to the component report.
There are three additional sections for:
 Zero-Length Arrays
 Array Fill Ratios
 Primitive Arrays with a Constant Value
This involved some extra improvements in adding highlighting to findings 
of wasted memory, and warning triangle tags which go up to the component 
level to make it clear which sections to focus on. Now that is working we 
can add more sections if anyone has some good ideas.
The primitive arrays with constant value is now a quantized report 
grouping objects of the same length with same repeated value.
The fill ratio queries now directly show the wasted bytes in the backing 
arrays.
The array size query now shows the array length as well as the array size
The collection/array queries now show updates for which type of object 
they are operating on.
I have suppressed messages about unrecognized collections after 20 
messages per type.
The lazy loading of array lengths (like field are lazy loaded) makes it 
quick to do a getObject() and view its type, retained size etc. which is 
useful for OQL and calculating the members of a component.
The quantize queries now also operate on MAT Bytes as well as long and 
double.
A possible problem with adding the 'Zero-Length Arrays' and 'Array Fill 
Ratios' is that every array object ID will end up in a list inside the 
query result. Sometimes it is used - for the links 'First 10 of 46 
objects' but most are not, but they use memory until the HTML has been 
built.

Do try out the updated Top Components Report.

Krum, it it Eclipse 2021-06 M2 this week, are you able to submit what we 
have so far, say on Tuesday May 4 2021, ready for M2+3?

--
Andrew Johnson



Unless stated otherwise above:
IBM United Kingdom Limited - Registered in England and Wales with number 
741598. 
Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 3AU



Back to the top