的CentOS Linux的時候使用顯著內存中釋放1611年7月3日爲什麼我的C++程序做tcmalloc堆檢查或堆輪廓
gcc版本4.8.5 20150623
gperftool 2.4-8.el7
1.my C++程序哪些鏈接-ltcmalloc工作正常,沒有HEAPCHECKER或HEAPPROFILE。它使用的內存穩定在5M〜10M。
2.if我使用堆檢查器運行程序env HEAPCHECKER = NORMAL,內存每小時增加大約50M,直到OOM殺手。
3,如果我用堆形輪廓與ENV HEAPPROFILE =「./馬力」 HEAP_PROFILE_ALLOCATION_INTERVAL =億,存儲器增加約100M每40分鐘,並且還OOM是triggered.However,當我使用pprof到分析堆文件,它顯示的總內存只有0.1MB,我期望100M。
我知道堆檢查和堆配置文件會導致額外的內存使用,因爲他們需要記錄一些其他信息來跟蹤內存分配,但我不認爲這是我的情況的原因。
我使用堆檢查器和堆配置文件與另一個小程序,它工作得很好。
這兩個程序最大的區別在於,錯誤的程序使用協程,我的意思是函數swapcontext,getcontext和makecontext。
我的問題是:
Q1.Why並通過pprof打開堆文件顯示總內存爲0.1M,當我設置HEAP_PROFILE_ALLOCATION_INTERVAL =億?
問題2.堆檢查器或堆配置文件可能與那些協程函數不協調嗎?