< prev index next >

src/hotspot/os/linux/os_linux.cpp

Print this page




3851       numa_make_global(addr, bytes);
3852     }
3853 
3854     // The memory is committed
3855     MemTracker::record_virtual_memory_reserve_and_commit((address)addr, bytes, CALLER_PC);
3856   }
3857 
3858   return addr;
3859 }
3860 
3861 bool os::Linux::release_memory_special_shm(char* base, size_t bytes) {
3862   // detaching the SHM segment will also delete it, see reserve_memory_special_shm()
3863   return shmdt(base) == 0;
3864 }
3865 
3866 bool os::Linux::release_memory_special_huge_tlbfs(char* base, size_t bytes) {
3867   return pd_release_memory(base, bytes);
3868 }
3869 
3870 bool os::release_memory_special(char* base, size_t bytes) {
3871   bool res;
3872   if (MemTracker::tracking_level() > NMT_minimal) {
3873     Tracker tkr = MemTracker::get_virtual_memory_release_tracker();
3874     res = os::Linux::release_memory_special_impl(base, bytes);
3875     if (res) {
3876       tkr.record((address)base, bytes);
3877     }
3878 
3879   } else {
3880     res = os::Linux::release_memory_special_impl(base, bytes);
3881   }
3882   return res;
3883 }
3884 
3885 bool os::Linux::release_memory_special_impl(char* base, size_t bytes) {
3886   assert(UseLargePages, "only for large pages");
3887   bool res;
3888 
3889   if (UseSHM) {
3890     res = os::Linux::release_memory_special_shm(base, bytes);
3891   } else {
3892     assert(UseHugeTLBFS, "must be");
3893     res = os::Linux::release_memory_special_huge_tlbfs(base, bytes);
3894   }
3895   return res;
3896 }
3897 
3898 size_t os::large_page_size() {
3899   return _large_page_size;
3900 }




3851       numa_make_global(addr, bytes);
3852     }
3853 
3854     // The memory is committed
3855     MemTracker::record_virtual_memory_reserve_and_commit((address)addr, bytes, CALLER_PC);
3856   }
3857 
3858   return addr;
3859 }
3860 
3861 bool os::Linux::release_memory_special_shm(char* base, size_t bytes) {
3862   // detaching the SHM segment will also delete it, see reserve_memory_special_shm()
3863   return shmdt(base) == 0;
3864 }
3865 
3866 bool os::Linux::release_memory_special_huge_tlbfs(char* base, size_t bytes) {
3867   return pd_release_memory(base, bytes);
3868 }
3869 
3870 bool os::release_memory_special(char* base, size_t bytes) {
3871   bool res = os::Linux::release_memory_special_impl(base, bytes);



3872   if (res) {
3873     MemTracker::record_virtual_memory_release(base, bytes);




3874   }
3875   return res;
3876 }
3877 
3878 bool os::Linux::release_memory_special_impl(char* base, size_t bytes) {
3879   assert(UseLargePages, "only for large pages");
3880   bool res;
3881 
3882   if (UseSHM) {
3883     res = os::Linux::release_memory_special_shm(base, bytes);
3884   } else {
3885     assert(UseHugeTLBFS, "must be");
3886     res = os::Linux::release_memory_special_huge_tlbfs(base, bytes);
3887   }
3888   return res;
3889 }
3890 
3891 size_t os::large_page_size() {
3892   return _large_page_size;
3893 }


< prev index next >