# HG changeset patch # User jcoomes # Date 1348011879 14400 # Node ID 0e5be2138cd66749750ece718119c3b3320aa5c1 # Parent 37518f191ddb3d9a5c4e9985278cf129035123d8# Parent 45f22ba9348dd0791000a6c0b1b95eff7bbb1e59 Merge diff -r 37518f191ddb -r 0e5be2138cd6 src/share/vm/runtime/arguments.cpp --- a/src/share/vm/runtime/arguments.cpp Tue Sep 18 13:15:28 2012 -0700 +++ b/src/share/vm/runtime/arguments.cpp Tue Sep 18 19:44:39 2012 -0400 @@ -1978,6 +1978,12 @@ status = status && verify_min_value(ClassMetaspaceSize, 1*M, "ClassMetaspaceSize"); + // check native memory tracking flags + if (PrintNMTStatistics && MemTracker::tracking_level() == MemTracker::NMT_off) { + warning("PrintNMTStatistics is disabled, because native memory tracking is not enabled"); + PrintNMTStatistics = false; + } + return status; } diff -r 37518f191ddb -r 0e5be2138cd6 src/share/vm/runtime/globals.hpp --- a/src/share/vm/runtime/globals.hpp Tue Sep 18 13:15:28 2012 -0700 +++ b/src/share/vm/runtime/globals.hpp Tue Sep 18 19:44:39 2012 -0400 @@ -863,6 +863,9 @@ product(ccstr, NativeMemoryTracking, "off", \ "Native memory tracking options") \ \ + diagnostic(bool, PrintNMTStatistics, false, \ + "Print native memory tracking summary data if it is on") \ + \ diagnostic(bool, LogCompilation, false, \ "Log compilation activity in detail to hotspot.log or LogFile") \ \ diff -r 37518f191ddb -r 0e5be2138cd6 src/share/vm/runtime/java.cpp --- a/src/share/vm/runtime/java.cpp Tue Sep 18 13:15:28 2012 -0700 +++ b/src/share/vm/runtime/java.cpp Tue Sep 18 19:44:39 2012 -0400 @@ -56,6 +56,8 @@ #include "runtime/task.hpp" #include "runtime/timer.hpp" #include "runtime/vm_operations.hpp" +#include "services/memReporter.hpp" +#include "services/memTracker.hpp" #include "trace/tracing.hpp" #include "trace/traceEventTypes.hpp" #include "utilities/dtrace.hpp" @@ -359,6 +361,15 @@ } #endif // COMPILER2 #endif // ENABLE_ZAP_DEAD_LOCALS + // Native memory tracking data + if (PrintNMTStatistics) { + if (MemTracker::is_on()) { + BaselineTTYOutputer outputer(tty); + MemTracker::print_memory_usage(outputer, K, false); + } else { + tty->print_cr(MemTracker::reason()); + } + } } #else // PRODUCT MODE STATISTICS @@ -376,6 +387,16 @@ if (PrintBiasedLockingStatistics) { BiasedLocking::print_counters(); } + + // Native memory tracking data + if (PrintNMTStatistics) { + if (MemTracker::is_on()) { + BaselineTTYOutputer outputer(tty); + MemTracker::print_memory_usage(outputer, K, false); + } else { + tty->print_cr(MemTracker::reason()); + } + } } #endif diff -r 37518f191ddb -r 0e5be2138cd6 src/share/vm/services/memTracker.hpp --- a/src/share/vm/services/memTracker.hpp Tue Sep 18 13:15:28 2012 -0700 +++ b/src/share/vm/services/memTracker.hpp Tue Sep 18 19:44:39 2012 -0400 @@ -85,7 +85,7 @@ NMT_shutdown // shutdown }; - + public: // native memory tracking level enum NMTLevel { NMT_off, // native memory tracking is off @@ -93,7 +93,6 @@ NMT_detail // track callsite also }; - public: enum ShutdownReason { NMT_shutdown_none, // no shutdown requested NMT_shutdown_user, // user requested shutdown @@ -117,6 +116,10 @@ _state >= NMT_bootstrapping_single_thread); } + static inline enum NMTLevel tracking_level() { + return _tracking_level; + } + // user readable reason for shutting down NMT static const char* reason() { switch(_reason) {