NMT merges adjacent unrelated reservations
Thomas Schatzl
thomas.schatzl at oracle.com
Thu Apr 25 07:18:26 PDT 2013
Hi all,
while trying out NMT I found some oddity with it: the NMT summary
seems to merge virtual memory reservations that are adjacent in memory.
I.e. at the moment in G1 there are five independent virtual memory
reservations at startup - I've seen NMT summaries with two to four
(never five) entries in the virtual memory map. This depends on thread
timing it seems.
Note that four of these reservations commit their entire memory almost
immediately.
Is this intentional? If so, is there a way to disable this behavior?
This makes determining the source of these allocations unnecessarily
difficult.
Further, is there a way to get more than one stack level in the
allocation stack trace? Currently it always reads
"ReservedSpace::initialize()" in all allocations. This is not really
useful. Maybe it is possible to use the PC of the preceding call to
MemTracker::record_virtual_memory_type() for getting the stack trace
instead.
Is there a way to add a tag to allocations for grouping purposes in the
summary? Currently, given that there is only a single stack level in the
source in the summary, it is very hard to assign allocations to the
components that actually did the allocation. For some reasons the "for
<component>" string is also missing in the malloc allocation map.
Maybe you have another idea how to solve this problem?
Sorry if all that has already been discussed here.
Thanks,
Thomas
More information about the hotspot-runtime-dev
mailing list