雲風大神屢次強調:穩定高效的 MMORPG 伺服器必須擁有專屬記憶體分配機制。標準 new/delete 或 malloc/free 在高併發、長時間運行、頻繁小物件分配場景下,易產生碎片、鎖競爭、效能抖動。Ryzom 開源專案在 misc 目錄實作四種互補策略,針對不同物件生命週期與存取模式優化。

purge() 釋放所有區塊。
new。
std::vector 預分配 N 個元素,多個 vector 以 list 串聯;釋放時批次銷毀所有 vector。new/delete,不改變分配行為。| 物件特徵 | 推薦分配器 | 典型例子 |
|---|---|---|
| 長壽命、固定大小、高頻建立銷毀 | CBlockMemory | 實體、技能特效、路徑節點 |
| 需連續記憶體、大小可變 | CContiguousBlockAllocator | 網路封包緩衝、語音幀、地形區塊 |
| 短壽命、批次建立/回收 | CPoolMemory | 事件訊息、臨時計算結構、Lua 狀態 |
| 其他/不確定 | CHeapMemory | 設定物件、單例管理器 |
「要弄清楚自己最小的需求是什麼。」—— 沒有銀彈,只有對業務模式精準建模後的工程權衡。Ryzom 四大分配器各司其職,共同支撐千萬級物件的穩定運作。