< prev index next >

src/hotspot/share/services/memTracker.hpp

Print this page




 234 
 235   static inline Tracker get_virtual_memory_release_tracker() {
 236     assert(tracking_level() >= NMT_summary, "Check by caller");
 237     return Tracker(Tracker::release);
 238   }
 239 
 240   static inline void record_virtual_memory_type(void* addr, MEMFLAGS flag) {
 241     if (tracking_level() < NMT_summary) return;
 242     if (addr != NULL) {
 243       ThreadCritical tc;
 244       if (tracking_level() < NMT_summary) return;
 245       VirtualMemoryTracker::set_reserved_region_type((address)addr, flag);
 246     }
 247   }
 248 
 249   static inline void record_thread_stack(void* addr, size_t size) {
 250     if (tracking_level() < NMT_summary) return;
 251     if (addr != NULL) {
 252       // uses thread stack malloc slot for book keeping number of threads
 253       MallocMemorySummary::record_malloc(0, mtThreadStack);
 254       record_virtual_memory_reserve_and_commit(addr, size, CALLER_PC, mtThreadStack);
 255     }
 256   }
 257 
 258   static inline void release_thread_stack(void* addr, size_t size) {
 259     if (tracking_level() < NMT_summary) return;
 260     if (addr != NULL) {
 261       // uses thread stack malloc slot for book keeping number of threads
 262       MallocMemorySummary::record_free(0, mtThreadStack);
 263       ThreadCritical tc;
 264       if (tracking_level() < NMT_summary) return;
 265       VirtualMemoryTracker::remove_released_region((address)addr, size);
 266     }
 267   }
 268 
 269   // Query lock is used to synchronize the access to tracking data.
 270   // So far, it is only used by JCmd query, but it may be used by
 271   // other tools.
 272   static inline Mutex* query_lock() { return _query_lock; }
 273 
 274   // Make a final report or report for hs_err file.




 234 
 235   static inline Tracker get_virtual_memory_release_tracker() {
 236     assert(tracking_level() >= NMT_summary, "Check by caller");
 237     return Tracker(Tracker::release);
 238   }
 239 
 240   static inline void record_virtual_memory_type(void* addr, MEMFLAGS flag) {
 241     if (tracking_level() < NMT_summary) return;
 242     if (addr != NULL) {
 243       ThreadCritical tc;
 244       if (tracking_level() < NMT_summary) return;
 245       VirtualMemoryTracker::set_reserved_region_type((address)addr, flag);
 246     }
 247   }
 248 
 249   static inline void record_thread_stack(void* addr, size_t size) {
 250     if (tracking_level() < NMT_summary) return;
 251     if (addr != NULL) {
 252       // uses thread stack malloc slot for book keeping number of threads
 253       MallocMemorySummary::record_malloc(0, mtThreadStack);
 254       record_virtual_memory_reserve(addr, size, CALLER_PC, mtThreadStack);
 255     }
 256   }
 257 
 258   static inline void release_thread_stack(void* addr, size_t size) {
 259     if (tracking_level() < NMT_summary) return;
 260     if (addr != NULL) {
 261       // uses thread stack malloc slot for book keeping number of threads
 262       MallocMemorySummary::record_free(0, mtThreadStack);
 263       ThreadCritical tc;
 264       if (tracking_level() < NMT_summary) return;
 265       VirtualMemoryTracker::remove_released_region((address)addr, size);
 266     }
 267   }
 268 
 269   // Query lock is used to synchronize the access to tracking data.
 270   // So far, it is only used by JCmd query, but it may be used by
 271   // other tools.
 272   static inline Mutex* query_lock() { return _query_lock; }
 273 
 274   // Make a final report or report for hs_err file.


< prev index next >