397
398 bool add_committed_region(const CommittedMemoryRegion& rgn) {
399 assert(rgn.base() != NULL, "Invalid base address");
400 assert(size() > 0, "Invalid size");
401 return _committed_regions.add(rgn) != NULL;
402 }
403 };
404
405 int compare_reserved_region_base(const ReservedMemoryRegion& r1, const ReservedMemoryRegion& r2);
406
407 class VirtualMemoryWalker : public StackObj {
408 public:
409 virtual bool do_allocation_site(const ReservedMemoryRegion* rgn) { return false; }
410 };
411
412 // Main class called from MemTracker to track virtual memory allocations, commits and releases.
413 class VirtualMemoryTracker : AllStatic {
414 public:
415 static bool initialize(NMT_TrackingLevel level);
416
417 static bool add_reserved_region (address base_addr, size_t size, const NativeCallStack& stack,
418 MEMFLAGS flag = mtNone, bool all_committed = false);
419
420 static bool add_committed_region (address base_addr, size_t size, const NativeCallStack& stack);
421 static bool remove_uncommitted_region (address base_addr, size_t size);
422 static bool remove_released_region (address base_addr, size_t size);
423 static void set_reserved_region_type (address addr, MEMFLAGS flag);
424
425 // Walk virtual memory data structure for creating baseline, etc.
426 static bool walk_virtual_memory(VirtualMemoryWalker* walker);
427
428 static bool transition(NMT_TrackingLevel from, NMT_TrackingLevel to);
429
430 private:
431 static SortedLinkedList<ReservedMemoryRegion, compare_reserved_region_base> _reserved_regions;
432 };
433
434
435 #endif // INCLUDE_NMT
436
437 #endif // SHARE_VM_SERVICES_VIRTUAL_MEMORY_TRACKER_HPP
|
397
398 bool add_committed_region(const CommittedMemoryRegion& rgn) {
399 assert(rgn.base() != NULL, "Invalid base address");
400 assert(size() > 0, "Invalid size");
401 return _committed_regions.add(rgn) != NULL;
402 }
403 };
404
405 int compare_reserved_region_base(const ReservedMemoryRegion& r1, const ReservedMemoryRegion& r2);
406
407 class VirtualMemoryWalker : public StackObj {
408 public:
409 virtual bool do_allocation_site(const ReservedMemoryRegion* rgn) { return false; }
410 };
411
412 // Main class called from MemTracker to track virtual memory allocations, commits and releases.
413 class VirtualMemoryTracker : AllStatic {
414 public:
415 static bool initialize(NMT_TrackingLevel level);
416
417 // Late phase initialization
418 static bool late_initialize(NMT_TrackingLevel level);
419
420 static bool add_reserved_region (address base_addr, size_t size, const NativeCallStack& stack,
421 MEMFLAGS flag = mtNone, bool all_committed = false);
422
423 static bool add_committed_region (address base_addr, size_t size, const NativeCallStack& stack);
424 static bool remove_uncommitted_region (address base_addr, size_t size);
425 static bool remove_released_region (address base_addr, size_t size);
426 static void set_reserved_region_type (address addr, MEMFLAGS flag);
427
428 // Walk virtual memory data structure for creating baseline, etc.
429 static bool walk_virtual_memory(VirtualMemoryWalker* walker);
430
431 static bool transition(NMT_TrackingLevel from, NMT_TrackingLevel to);
432
433 private:
434 static SortedLinkedList<ReservedMemoryRegion, compare_reserved_region_base>* _reserved_regions;
435 };
436
437
438 #endif // INCLUDE_NMT
439
440 #endif // SHARE_VM_SERVICES_VIRTUAL_MEMORY_TRACKER_HPP
|