Re: [問題] Return memory to OS from big std::map
※ 引述《Wush978 (拒看低質媒體)》之銘言:
: 開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
: Linux
: G++
: 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
: No
: 問題(Question):
: 如何設計allocator讓刪除std::map之後能把消耗的記憶體返回給OS
: 補充說明(Supplement):
: 我正在撰寫多Process和MPI的C++ extension of R 來處理大量資料。
: 其中在data cleaning的時候,需要使用
: std::map<std::string, std::map<std::string, int> >
: 建立Index來加速random access。
: 但是當整理完畢之後,我刪除std::map之後卻發現記憶體並沒有歸還到OS,
: 所以後續R 要調用記憶體的時候就不足了。
: 後來我注意到這篇文章:
: http://stackoverflow.com/questions/2629018/how-do-i-force-my-stdmap-to-deallocate-memory-used
: (縮網址:http://0rz.tw/VxcBo)
: 看起來這是預設的memory allocator的行為。
: 我想請問,除了下面有人提到用boost的pool library來自製memory allocator之外,
: 還有沒有什麼其他建議呢?(例如改用其他資料結構或是第三方library)
: 謝謝
因為不知道 extension for R 是怎麼寫的,我還是說說看應該有幫助的建議。
1. Fork Process. 當你要使用大塊的記憶體的時候,使用不同的 process。
當運算結束後,刪掉process。那麼記憶體會自然回到 OS
2. 用 mtrace profile 一下 memory leak, 或是請 malloc 把記憶體還回去
mtrace :
http://www.linuxjournal.com/article/6059
force malloc 把記憶體還回去
http://stackoverflow.com/questions/17199554/how-can-i-force-the-stl-memory-cache-to-clear
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 1.171.171.137
推
01/14 01:09, , 1F
01/14 01:09, 1F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章