1
您很清楚如何結合mlockall()
和malloc()
來鎖定進程在其生命週期中分配的所有頁面。通過閱讀文檔,我不清楚是否釋放已鎖定內存意味着相應頁面的自動解鎖。釋放鎖定的內存是否解鎖相應的頁面?
您很清楚如何結合mlockall()
和malloc()
來鎖定進程在其生命週期中分配的所有頁面。通過閱讀文檔,我不清楚是否釋放已鎖定內存意味着相應頁面的自動解鎖。釋放鎖定的內存是否解鎖相應的頁面?
如果free
將內存返回給系統(即它被分配了mmap
並且將被釋放,並且將被釋放,並且將被釋放),那麼鎖定將在未映射時自動刪除。這通常是大分配的情況。
如果free
將內存返回到進程內部管理的堆,那麼鎖將保留。小分配通常就是這種情況。
在GNU/Linux上,您可以使用mallopt
來獲取和設置使用mmap
分配的閾值;默認(在我的電腦上,至少)是128kb。在其他Unix版本中,如果您需要該級別的控制,則可能需要直接使用mmap
。