On Wed, 26 Aug 2026 13:31:57 GMT, Oli Gillespie <[email protected]> wrote:

> Please review this simple change to remove filler arrays (and objects) from 
> heap dumps. In the hprof format, they are not distinguishable from `int[]`, 
> which can be confusing (where are these huge `int[]`s coming from in my 
> application?), and they bloat the heap dump time and size.
> 
> (Note: I sent a request for comments [on the serviceability-dev mailing 
> list](https://mail.openjdk.org/archives/list/[email protected]/thread/USL6YYR2UW76Z4VFESN225ZASLL2DHYQ/)
>  but got no response, so made a PR)
> 
> Using Eclipse MAT, before:
> 
> with-filler.hprof - 6.2GB
> 
> Class Name | Objects | Shallow Heap
> =====================================
>     byte[]    39,938   4,997,553,360
>      int[]    45,839   1,140,524,000
> 
> 
> After:
> 
> without-filler.hprof - 5.0GB
> 
> Class Name | Objects | Shallow Heap
> =====================================
>     byte[]    48,321    4,998,520,248
>      int[]     4,995          951,088
> 
> 
> ([Test 
> file](https://gist.github.com/olivergillespie/1661499afb9e1c708de30cf0bdfca30e))
> 
> ---------
> - [x] I confirm that I make this contribution in accordance with the [OpenJDK 
> Interim AI Policy](https://openjdk.org/legal/ai).

Looks good to me. I think the argument that filler objects are "synthetic" is 
solid, and indeed I has worked through my own share of confusions about large 
`int[]` arrays in heap dumps.

src/hotspot/share/services/heapDumper.cpp line 2206:

> 2204:   }
> 2205: 
> 2206:   if (CollectedHeap::is_filler_object(o)) {

OK, so `mark_dormant_archived_object` filters objects with classes which Java 
mirrors have not yet loaded. But for filler objects, I expect 
`Universe::fillerArrayKlass()` and `vmClasses::FillerObject_klass()` to be 
fully loaded at all times. So we can filter filler objects ignoring the dormant 
class check.

-------------

Marked as reviewed by shade (Reviewer).

PR Review: https://git.openjdk.org/jdk/pull/32542#pullrequestreview-5032484209
PR Review Comment: https://git.openjdk.org/jdk/pull/32542#discussion_r3864473465

Reply via email to