src/os/bsd/vm/os_bsd.cpp

changeset 7074
833b0f92429a
parent 6918
d22136881b85
child 7535
7ae4e26cb1e0
child 7633
8461d0b03127
     1.1 --- a/src/os/bsd/vm/os_bsd.cpp	Wed Aug 27 09:36:55 2014 +0200
     1.2 +++ b/src/os/bsd/vm/os_bsd.cpp	Wed Aug 27 08:19:12 2014 -0400
     1.3 @@ -2434,23 +2434,25 @@
     1.4    }
     1.5  
     1.6    // The memory is committed
     1.7 -  MemTracker::record_virtual_memory_reserve_and_commit((address)addr, bytes, mtNone, CALLER_PC);
     1.8 +  MemTracker::record_virtual_memory_reserve_and_commit((address)addr, bytes, CALLER_PC);
     1.9  
    1.10    return addr;
    1.11  }
    1.12  
    1.13  bool os::release_memory_special(char* base, size_t bytes) {
    1.14 -  MemTracker::Tracker tkr = MemTracker::get_virtual_memory_release_tracker();
    1.15 -  // detaching the SHM segment will also delete it, see reserve_memory_special()
    1.16 -  int rslt = shmdt(base);
    1.17 -  if (rslt == 0) {
    1.18 -    tkr.record((address)base, bytes);
    1.19 -    return true;
    1.20 +  if (MemTracker::tracking_level() > NMT_minimal) {
    1.21 +    Tracker tkr = MemTracker::get_virtual_memory_release_tracker();
    1.22 +    // detaching the SHM segment will also delete it, see reserve_memory_special()
    1.23 +    int rslt = shmdt(base);
    1.24 +    if (rslt == 0) {
    1.25 +      tkr.record((address)base, bytes);
    1.26 +      return true;
    1.27 +    } else {
    1.28 +      return false;
    1.29 +    }
    1.30    } else {
    1.31 -    tkr.discard();
    1.32 -    return false;
    1.33 +    return shmdt(base) == 0;
    1.34    }
    1.35 -
    1.36  }
    1.37  
    1.38  size_t os::large_page_size() {

mercurial