hotspot/src/os/linux/vm/os_linux.cpp
changeset 18086 f44cf213a775
parent 18069 e6d4971c8650
child 18683 a6418e038255
child 22809 8f0522f038d3
equal deleted inserted replaced
18084:c2e807acd8c5 18086:f44cf213a775
  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;