Print this page
8236073: G1: Use SoftMaxHeapSize to guide GC heuristics


 117     }
 118   } else {
 119     _is_nmt_env_valid = false;
 120   }
 121 
 122   return true;
 123 }
 124 
 125 bool MemTracker::verify_nmt_option() {
 126   return _is_nmt_env_valid;
 127 }
 128 
 129 void* MemTracker::malloc_base(void* memblock) {
 130   return MallocTracker::get_base(memblock);
 131 }
 132 
 133 void Tracker::record(address addr, size_t size) {
 134   if (MemTracker::tracking_level() < NMT_summary) return;
 135   switch(_type) {
 136     case uncommit:


 137       VirtualMemoryTracker::remove_uncommitted_region(addr, size);
 138       break;

 139     case release:


 140       VirtualMemoryTracker::remove_released_region(addr, size);
 141         break;

 142     default:
 143       ShouldNotReachHere();
 144   }
 145 }
 146 
 147 
 148 // Shutdown can only be issued via JCmd, and NMT JCmd is serialized by lock
 149 void MemTracker::shutdown() {
 150   // We can only shutdown NMT to minimal tracking level if it is ever on.
 151   if (tracking_level() > NMT_minimal) {
 152     transition_to(NMT_minimal);
 153   }
 154 }
 155 
 156 bool MemTracker::transition_to(NMT_TrackingLevel level) {
 157   NMT_TrackingLevel current_level = tracking_level();
 158 
 159   assert(level != NMT_off || current_level == NMT_off, "Cannot transition NMT to off");
 160 
 161   if (current_level == level) {




 117     }
 118   } else {
 119     _is_nmt_env_valid = false;
 120   }
 121 
 122   return true;
 123 }
 124 
 125 bool MemTracker::verify_nmt_option() {
 126   return _is_nmt_env_valid;
 127 }
 128 
 129 void* MemTracker::malloc_base(void* memblock) {
 130   return MallocTracker::get_base(memblock);
 131 }
 132 
 133 void Tracker::record(address addr, size_t size) {
 134   if (MemTracker::tracking_level() < NMT_summary) return;
 135   switch(_type) {
 136     case uncommit:
 137     {
 138       ThreadCritical tc;
 139       VirtualMemoryTracker::remove_uncommitted_region(addr, size);
 140       break;
 141     }
 142     case release:
 143     {
 144       ThreadCritical tc;
 145       VirtualMemoryTracker::remove_released_region(addr, size);
 146       break;
 147     }
 148     default:
 149       ShouldNotReachHere();
 150   }
 151 }
 152 
 153 
 154 // Shutdown can only be issued via JCmd, and NMT JCmd is serialized by lock
 155 void MemTracker::shutdown() {
 156   // We can only shutdown NMT to minimal tracking level if it is ever on.
 157   if (tracking_level() > NMT_minimal) {
 158     transition_to(NMT_minimal);
 159   }
 160 }
 161 
 162 bool MemTracker::transition_to(NMT_TrackingLevel level) {
 163   NMT_TrackingLevel current_level = tracking_level();
 164 
 165   assert(level != NMT_off || current_level == NMT_off, "Cannot transition NMT to off");
 166 
 167   if (current_level == level) {