< prev index next >

src/hotspot/share/nmt/virtualMemoryTracker.cpp

Print this page

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





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

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

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