饭中淹的避难所~~~~~

偶尔来避难的地方~

  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  94 随笔 :: 0 文章 :: 257 评论 :: 0 Trackbacks
1- 保持內存地址與系統的頁面起始點對齊。
2- 減少小量內存的單獨分配,使用對象池或者內存池進行小量內存的管理。
3- 儘量用系統提供的API進行基於頁面的分配,以提高系統操作和管理內存時的效率。(VIRTUALALLOC)

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

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



posted on 2011-07-07 07:37 饭中淹 阅读(626) 评论(0)  编辑 收藏 引用 所属分类: 游戏服务器

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理