在WINDOWS下如何高效的使用內存

在WINDOWS下如何高效的使用內存
1- 保持內存地址與系統的頁面起始點對齊。
2- 減少小量內存的單獨分配,使用對象池或者內存池進行小量內存的管理。
3- 儘量用系統提供的API進行基於頁面的分配,以提高系統操作和管理內存時的效率。(VIRTUALALLOC)

經過測試,malloc的內存管理沒有直接綁定到頁面。virtualalloc才會直接按照頁面來分配。
測試方法:用Malloc分配4096和4097大小的1024塊內存,從進程管理器中查看內存消耗,並沒有太大區別。
用virtualalloc分配4096和4097大小的1024塊內存,消耗相差近一倍。
分析可知,virtualalloc按照頁面來進行分配,一般頁面大小為4096字節,4097超過1字節會令系統增加一個頁面的分配,從而導致內存使用量攀升近一倍。
同時我們可以得知,malloc的內存分配不會按頁來進行分配,也就是不會進行頁面對齊。

在IOCP應用中,很多時候系統都會鎖用戶內存,鎖內存都是以頁為單位來鎖,沒有對齊過的內存,會導致鎖跨頁面,降低操作的效率,或可造成安全問題。



你可能感兴趣的:(在WINDOWS下如何高效的使用內存)