3361 if ((addr != NULL) && UseNUMAInterleaving) { |
3361 if ((addr != NULL) && UseNUMAInterleaving) { |
3362 numa_make_global(addr, bytes); |
3362 numa_make_global(addr, bytes); |
3363 } |
3363 } |
3364 |
3364 |
3365 // The memory is committed |
3365 // The memory is committed |
3366 address pc = CALLER_PC; |
3366 MemTracker::record_virtual_memory_reserve_and_commit((address)addr, bytes, mtNone, CALLER_PC); |
3367 MemTracker::record_virtual_memory_reserve((address)addr, bytes, pc); |
|
3368 MemTracker::record_virtual_memory_commit((address)addr, bytes, pc); |
|
3369 |
3367 |
3370 return addr; |
3368 return addr; |
3371 } |
3369 } |
3372 |
3370 |
3373 bool os::release_memory_special(char* base, size_t bytes) { |
3371 bool os::release_memory_special(char* base, size_t bytes) { |
|
3372 MemTracker::Tracker tkr = MemTracker::get_virtual_memory_release_tracker(); |
3374 // detaching the SHM segment will also delete it, see reserve_memory_special() |
3373 // detaching the SHM segment will also delete it, see reserve_memory_special() |
3375 int rslt = shmdt(base); |
3374 int rslt = shmdt(base); |
3376 if (rslt == 0) { |
3375 if (rslt == 0) { |
3377 MemTracker::record_virtual_memory_uncommit((address)base, bytes); |
3376 tkr.record((address)base, bytes); |
3378 MemTracker::record_virtual_memory_release((address)base, bytes); |
|
3379 return true; |
3377 return true; |
3380 } else { |
3378 } else { |
3381 return false; |
3379 tkr.discard(); |
|
3380 return false; |
3382 } |
3381 } |
3383 } |
3382 } |
3384 |
3383 |
3385 size_t os::large_page_size() { |
3384 size_t os::large_page_size() { |
3386 return _large_page_size; |
3385 return _large_page_size; |