--- a/hotspot/src/share/vm/services/memReporter.cpp Thu Oct 18 13:09:47 2012 -0400
+++ b/hotspot/src/share/vm/services/memReporter.cpp Fri Oct 19 21:40:07 2012 -0400
@@ -51,6 +51,7 @@
report_summaries(baseline);
if (!summary_only && MemTracker::track_callsite()) {
+ report_virtual_memory_map(baseline);
report_callsites(baseline);
}
_outputer.done();
@@ -74,6 +75,25 @@
_outputer.done_category_summary();
}
+void BaselineReporter::report_virtual_memory_map(const MemBaseline& baseline) {
+ _outputer.start_virtual_memory_map();
+ MemBaseline* pBL = const_cast<MemBaseline*>(&baseline);
+ MemPointerArrayIteratorImpl itr = MemPointerArrayIteratorImpl(pBL->_vm_map);
+ VMMemRegionEx* rgn = (VMMemRegionEx*)itr.current();
+ while (rgn != NULL) {
+ if (rgn->is_reserved_region()) {
+ _outputer.reserved_memory_region(FLAGS_TO_MEMORY_TYPE(rgn->flags()),
+ rgn->base(), rgn->base() + rgn->size(), amount_in_current_scale(rgn->size()), rgn->pc());
+ } else {
+ _outputer.committed_memory_region(rgn->base(), rgn->base() + rgn->size(),
+ amount_in_current_scale(rgn->size()), rgn->pc());
+ }
+ rgn = (VMMemRegionEx*)itr.next();
+ }
+
+ _outputer.done_virtual_memory_map();
+}
+
void BaselineReporter::report_callsites(const MemBaseline& baseline) {
_outputer.start_callsite();
MemBaseline* pBL = const_cast<MemBaseline*>(&baseline);
@@ -324,6 +344,40 @@
_output->print_cr(" ");
}
+
+void BaselineTTYOutputer::start_virtual_memory_map() {
+ _output->print_cr("Virtual memory map:");
+}
+
+void BaselineTTYOutputer::reserved_memory_region(MEMFLAGS type, address base, address end,
+ size_t size, address pc) {
+ const char* unit = memory_unit(_scale);
+ char buf[128];
+ int offset;
+ _output->print_cr(" ");
+ _output->print_cr("[" PTR_FORMAT " - " PTR_FORMAT "] reserved %d%s for %s", base, end, size, unit,
+ MemBaseline::type2name(type));
+ if (os::dll_address_to_function_name(pc, buf, sizeof(buf), &offset)) {
+ _output->print_cr("\t\tfrom [%s+0x%x]", buf, offset);
+ }
+}
+
+void BaselineTTYOutputer::committed_memory_region(address base, address end, size_t size, address pc) {
+ const char* unit = memory_unit(_scale);
+ char buf[128];
+ int offset;
+ _output->print("\t[" PTR_FORMAT " - " PTR_FORMAT "] committed %d%s", base, end, size, unit);
+ if (os::dll_address_to_function_name(pc, buf, sizeof(buf), &offset)) {
+ _output->print_cr(" from [%s+0x%x]", buf, offset);
+ }
+}
+
+void BaselineTTYOutputer::done_virtual_memory_map() {
+ _output->print_cr(" ");
+}
+
+
+
void BaselineTTYOutputer::start_callsite() {
_output->print_cr("Details:");
_output->print_cr(" ");
@@ -337,7 +391,7 @@
size_t malloc_count) {
if (malloc_amt > 0) {
const char* unit = memory_unit(_scale);
- char buf[64];
+ char buf[128];
int offset;
if (pc == 0) {
_output->print("[BOOTSTRAP]%18s", " ");
@@ -357,7 +411,7 @@
size_t committed_amt) {
if (reserved_amt > 0) {
const char* unit = memory_unit(_scale);
- char buf[64];
+ char buf[128];
int offset;
if (pc == 0) {
_output->print("[BOOTSTRAP]%18s", " ");
@@ -502,7 +556,7 @@
int malloc_diff, int malloc_count_diff) {
if (malloc_diff != 0) {
const char* unit = memory_unit(_scale);
- char buf[64];
+ char buf[128];
int offset;
if (pc == 0) {
_output->print_cr("[BOOTSTRAP]%18s", " ");