一、介紹
內存管理模塊用於保存其他模塊中的數據申請和釋放,讓服務器中其他模塊中邏輯處理和數據進行分離。例如,廣場服和遊戲服中的插件,插件中的數據我們都可以在內存管理模塊中申請,這樣當我們需要熱更新插件的時候,不用額外處理插件中的數據(數據都在內存管理模塊中),只需要在插件加載的時候讀取對應的數據即可。
二、用途
可用於插件數據管理,以及用於其他模塊數據保持。
三、類圖
3.1 CDataCenter
CDataCenter是數據內存管理的數據中心,它負責數據節點的創建和讀取數據,它的接口如下,在創建插件的時候會爲它們分配一個數據結點(CDataNode),通過結點id和對應插件中定義的數據可以讀取已經保存的數據。
3.2 CDataNode
數據結點它負責管理某個具體的插件或者模塊數據,它的接口如下:
3.3 CDataItemArray
一個具體模塊中某類數據組,它的接口如下:
3.4 CBinaryItem
一個具體的數據流,申請的是一塊連續的內存,申請的數據大小會比實際打一個字節,可以擁有判斷數據有沒有越界,它的接口如下:
四 總結
內存管理模塊實現的功能很簡單只是將內存分配都集中在內存管理模塊中,將插件邏輯處理和數據進行了分離。
有點:
- 將具體模塊中邏輯處理和數據進行了分離,方便插件更新數據恢復
- 可以簡單的判斷數組是否存在越界
- 3可以判斷各個節點申請的內存數量,方便定位內存泄漏
缺點:
- 增大了內存開銷,每次申請內存的時候都多申請了一個字節
- 臨時申請的數據需要調研清理函數,容易遺漏造成內存泄漏
- 只是簡單的內存管理,並沒有對內存進行復原