< prev index next >

src/hotspot/share/nmt/virtualMemoryTracker.cpp

Print this page

372         VirtualMemorySummary::record_uncommitted_memory(reserved_rgn->committed_size(), reserved_rgn->flag());
373         VirtualMemorySummary::record_released_memory(reserved_rgn->size(), reserved_rgn->flag());
374 
375         // Add new region
376         VirtualMemorySummary::record_reserved_memory(rgn.size(), flag);
377 
378         *reserved_rgn = rgn;
379         return true;
380       }
381 
382       // CDS mapping region.
383       // CDS reserves the whole region for mapping CDS archive, then maps each section into the region.
384       // NMT reports CDS as a whole.
385       if (reserved_rgn->flag() == mtClassShared) {
386         log_debug(nmt)("CDS reserved region \'%s\' as a whole (" INTPTR_FORMAT ", " SIZE_FORMAT ")",
387                       reserved_rgn->flag_name(), p2i(reserved_rgn->base()), reserved_rgn->size());
388         assert(reserved_rgn->contain_region(base_addr, size), "Reserved CDS region should contain this mapping region");
389         return true;
390       }
391 
392       // Mapped CDS string region.
393       // The string region(s) is part of the java heap.
394       if (reserved_rgn->flag() == mtJavaHeap) {
395         log_debug(nmt)("CDS reserved region \'%s\' as a whole (" INTPTR_FORMAT ", " SIZE_FORMAT ")",
396                       reserved_rgn->flag_name(), p2i(reserved_rgn->base()), reserved_rgn->size());
397         assert(reserved_rgn->contain_region(base_addr, size), "Reserved heap region should contain this mapping region");
398         return true;
399       }
400 





401       // Print some more details. Don't use UL here to avoid circularities.
402       tty->print_cr("Error: existing region: [" INTPTR_FORMAT "-" INTPTR_FORMAT "), flag %u.\n"
403                     "       new region: [" INTPTR_FORMAT "-" INTPTR_FORMAT "), flag %u.",
404                     p2i(reserved_rgn->base()), p2i(reserved_rgn->end()), (unsigned)reserved_rgn->flag(),
405                     p2i(base_addr), p2i(base_addr + size), (unsigned)flag);
406       if (MemTracker::tracking_level() == NMT_detail) {
407         tty->print_cr("Existing region allocated from:");
408         reserved_rgn->call_stack()->print_on(tty);
409         tty->print_cr("New region allocated from:");
410         stack.print_on(tty);
411       }
412       ShouldNotReachHere();
413       return false;
414     }
415   }
416 }
417 
418 void VirtualMemoryTracker::set_reserved_region_type(address addr, MEMFLAGS flag) {
419   assert(addr != nullptr, "Invalid address");
420   assert(_reserved_regions != nullptr, "Sanity check");

372         VirtualMemorySummary::record_uncommitted_memory(reserved_rgn->committed_size(), reserved_rgn->flag());
373         VirtualMemorySummary::record_released_memory(reserved_rgn->size(), reserved_rgn->flag());
374 
375         // Add new region
376         VirtualMemorySummary::record_reserved_memory(rgn.size(), flag);
377 
378         *reserved_rgn = rgn;
379         return true;
380       }
381 
382       // CDS mapping region.
383       // CDS reserves the whole region for mapping CDS archive, then maps each section into the region.
384       // NMT reports CDS as a whole.
385       if (reserved_rgn->flag() == mtClassShared) {
386         log_debug(nmt)("CDS reserved region \'%s\' as a whole (" INTPTR_FORMAT ", " SIZE_FORMAT ")",
387                       reserved_rgn->flag_name(), p2i(reserved_rgn->base()), reserved_rgn->size());
388         assert(reserved_rgn->contain_region(base_addr, size), "Reserved CDS region should contain this mapping region");
389         return true;
390       }
391 
392       // Mapped CDS heap region.

393       if (reserved_rgn->flag() == mtJavaHeap) {
394         log_debug(nmt)("CDS reserved region \'%s\' as a whole (" INTPTR_FORMAT ", " SIZE_FORMAT ")",
395                       reserved_rgn->flag_name(), p2i(reserved_rgn->base()), reserved_rgn->size());
396         assert(reserved_rgn->contain_region(base_addr, size), "Reserved heap region should contain this mapping region");
397         return true;
398       }
399 
400       if (reserved_rgn->flag() == mtCode) {
401         assert(reserved_rgn->contain_region(base_addr, size), "Reserved code region should contain this mapping region");
402         return true;
403       }
404 
405       // Print some more details. Don't use UL here to avoid circularities.
406       tty->print_cr("Error: existing region: [" INTPTR_FORMAT "-" INTPTR_FORMAT "), flag %u.\n"
407                     "       new region: [" INTPTR_FORMAT "-" INTPTR_FORMAT "), flag %u.",
408                     p2i(reserved_rgn->base()), p2i(reserved_rgn->end()), (unsigned)reserved_rgn->flag(),
409                     p2i(base_addr), p2i(base_addr + size), (unsigned)flag);
410       if (MemTracker::tracking_level() == NMT_detail) {
411         tty->print_cr("Existing region allocated from:");
412         reserved_rgn->call_stack()->print_on(tty);
413         tty->print_cr("New region allocated from:");
414         stack.print_on(tty);
415       }
416       ShouldNotReachHere();
417       return false;
418     }
419   }
420 }
421 
422 void VirtualMemoryTracker::set_reserved_region_type(address addr, MEMFLAGS flag) {
423   assert(addr != nullptr, "Invalid address");
424   assert(_reserved_regions != nullptr, "Sanity check");
< prev index next >