3530 if ((retAddr != NULL) && UseNUMAInterleaving) { |
3530 if ((retAddr != NULL) && UseNUMAInterleaving) { |
3531 numa_make_global(retAddr, size); |
3531 numa_make_global(retAddr, size); |
3532 } |
3532 } |
3533 |
3533 |
3534 // The memory is committed |
3534 // The memory is committed |
3535 address pc = CALLER_PC; |
3535 MemTracker::record_virtual_memory_reserve_and_commit((address)retAddr, size, mtNone, CURRENT_PC); |
3536 MemTracker::record_virtual_memory_reserve((address)retAddr, size, pc); |
|
3537 MemTracker::record_virtual_memory_commit((address)retAddr, size, pc); |
|
3538 |
3536 |
3539 return retAddr; |
3537 return retAddr; |
3540 } |
3538 } |
3541 |
3539 |
3542 bool os::release_memory_special(char* base, size_t bytes) { |
3540 bool os::release_memory_special(char* base, size_t bytes) { |
|
3541 MemTracker::Tracker tkr = MemTracker::get_virtual_memory_release_tracker(); |
3543 // detaching the SHM segment will also delete it, see reserve_memory_special() |
3542 // detaching the SHM segment will also delete it, see reserve_memory_special() |
3544 int rslt = shmdt(base); |
3543 int rslt = shmdt(base); |
3545 if (rslt == 0) { |
3544 if (rslt == 0) { |
3546 MemTracker::record_virtual_memory_uncommit((address)base, bytes); |
3545 tkr.record((address)base, bytes); |
3547 MemTracker::record_virtual_memory_release((address)base, bytes); |
|
3548 return true; |
3546 return true; |
3549 } else { |
3547 } else { |
3550 return false; |
3548 tkr.discard(); |
|
3549 return false; |
3551 } |
3550 } |
3552 } |
3551 } |
3553 |
3552 |
3554 size_t os::large_page_size() { |
3553 size_t os::large_page_size() { |
3555 return _large_page_size; |
3554 return _large_page_size; |