青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

posts - 297,  comments - 15,  trackbacks - 0

昨天解決了一個隱蔽的內存泄漏問題,原因是pthread_create后的僵死線程沒有釋放導致的內存持續增長。
現象是這樣的:短時間內程序運行正常,但跑了12小時左右,用top查看其內存占用居然高達2G,于是馬上意識到有內存泄漏。

最先想到的是malloc/free、new/delete沒有配對,申請的內存沒有釋放。于是寫了個跟蹤malloc/free調用的模塊,不過檢查中并沒有找到未釋放的內存。之后懷疑是不是 free then malloc 導致的內存管理錯誤(事實證明雖然free后不是立即回收內存,但是接連調用free & malloc并不會影響操作系統的內存管理),不過寫了個小程序發現并不是這么回事。

陷入窘境了,只好用最小系統法把功能部分和內存分配都給屏蔽掉,這時發現內存泄漏依然存在!仔細看top的輸出,幾乎是每次創建線程時內存就往上漲一點,只是增長速度不是很快,看來是線程的問題了。仔細分析發現,之前圖簡單 pthread_create (&thread, NULL, &thread_function, NULL); 就這么寫了,參數2沒有設置線程結束后自動detach,并且沒有使用pthread_join或pthread_detach釋放執行結束后線程的空間!

 

Linux man page 里有已經說明了這個問題:
    When a joinable thread terminates, its memory resources (thread descriptor and stack) are not deallocated until another thread performs pthread_join on it. Therefore, pthread_join must be called  once  for each joinable thread created to avoid memory leaks.

也就說線程執行完后如果不join的話,線程的資源會一直得不到釋放而導致內存泄漏!一時的圖快后患無窮啊。

 

解決辦法

代碼
 1 // 最簡單的辦法,在線程執行結束后調用pthread_detach讓他自己釋放
 2 pthread_detach(pthread_self());
 3 
 4 
 5 // 或者創建線程前設置 PTHREAD_CREATE_DETACHED 屬性
 6 pthread_attr_t attr;
 7 pthread_t thread;
 8 pthread_attr_init (&attr);
 9 pthread_attr_setdetachstate (&attrPTHREAD_CREATE_DETACHED);
10 pthread_create (&thread, &attr&thread_function, NULL);
11 pthread_attr_destroy (&attr);

 

第2行的那種方法最簡單,在線程函數尾部加上這句話就可以將線程所占用的資源給釋放掉;或者像 5-11 所示的方法設置detach屬性,這樣也會在線程return/pthread_exit后釋放內存。

其實仔細想想,valgrind檢查時已經提示了pthread_create沒有釋放的問題,只是之前沒引起注意。其實這樣的問題也只有在長時間運行時,慢慢積累這一點點的內存才會暴露出來,看來valgrind的提示也不能置之不理啊。

from:

http://www.cnblogs.com/bits/archive/2009/12/04/no_join_or_detach_memory_leak.html

posted on 2010-01-14 16:40 chatler 閱讀(3129) 評論(2)  編輯 收藏 引用 所屬分類: Linux_Coding

FeedBack:
# re: 解決Linux pthread_create內存泄漏問題[未登錄]
2010-06-02 17:08 | jack
不錯,支持一個。  回復  更多評論
  
# re: 解決Linux pthread_create內存泄漏問題
2012-05-03 10:07 | 朱先生
我試過,每一種方法有的時候不行。
第二種是可以的。
  回復  更多評論
  
<2025年9月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

常用鏈接

留言簿(10)

隨筆分類(307)

隨筆檔案(297)

algorithm

Books_Free_Online

C++

database

Linux

Linux shell

linux socket

misce

  • cloudward
  • 感覺這個博客還是不錯,雖然做的東西和我不大相關,覺得看看還是有好處的

network

OSS

  • Google Android
  • Android is a software stack for mobile devices that includes an operating system, middleware and key applications. This early look at the Android SDK provides the tools and APIs necessary to begin developing applications on the Android platform using the Java programming language.
  • os161 file list

overall

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久精品道一区二区三区| 国产精品视频午夜| 亚洲巨乳在线| 亚洲第一偷拍| 欧美日韩国产123区| 亚洲手机视频| 羞羞答答国产精品www一本| 国内精品嫩模av私拍在线观看| 久久亚洲精品伦理| 欧美r片在线| 亚洲资源在线观看| 久久精品国产2020观看福利| 亚洲欧洲日韩在线| 夜夜嗨av一区二区三区四区| 国产性做久久久久久| 亚洲电影第三页| 国产精品久久夜| 免费美女久久99| 欧美吻胸吃奶大尺度电影| 久久久999国产| 欧美精品网站| 久久婷婷蜜乳一本欲蜜臀| 欧美激情一二三区| 久久激情综合| 欧美日本韩国一区| 久久成人这里只有精品| 女女同性女同一区二区三区91| 亚洲影院色无极综合| 久久久久久穴| 欧美一区二区视频免费观看| 一区二区激情| 亚洲国产婷婷综合在线精品| 午夜宅男欧美| 美女脱光内衣内裤视频久久影院 | 99精品福利视频| 翔田千里一区二区| 亚洲午夜精品17c| 久久综合给合| 久久蜜臀精品av| 国产精品免费视频xxxx| 亚洲国产精品热久久| 国产午夜精品久久| 一区二区三欧美| 亚洲精品在线电影| 久久天堂精品| 久久天堂成人| 国产精品网红福利| 一本久道综合久久精品| 亚洲日本成人在线观看| 久久女同精品一区二区| 久久福利资源站| 国产精品乱码一区二三区小蝌蚪| 亚洲激情网站免费观看| 亚洲电影自拍| 久久婷婷一区| 欧美mv日韩mv国产网站| 国产在线视频欧美| 久久国产视频网| 久久精品国产清高在天天线| 国产精品自拍三区| 亚洲欧美欧美一区二区三区| 亚洲一区二区三区四区在线观看| 欧美精品手机在线| 亚洲精品小视频| 亚洲伊人观看| 国产精品久久久久久久久婷婷| 一本一本久久a久久精品综合妖精| 日韩一级大片| 国产精品成人免费视频| 亚洲午夜精品久久| 欧美一级片一区| 国内精品久久久久影院 日本资源| 久久福利一区| 欧美黄网免费在线观看| 日韩午夜激情av| 欧美午夜激情小视频| 亚洲一区视频在线| 久久综合网络一区二区| 亚洲国产精品久久久久久女王 | 亚洲午夜电影| 久久精品人人| 亚洲国产日韩在线| 欧美日韩一区二区三区在线视频| 亚洲午夜在线观看| 久久久噜噜噜久久久| 91久久国产自产拍夜夜嗨| 欧美日韩在线视频一区二区| 亚洲一区三区视频在线观看| 可以看av的网站久久看| 日韩视频在线观看| 国产精品一区二区在线| 久久久久久久999| 亚洲精品日韩激情在线电影| 欧美一级片一区| 精品99一区二区三区| 午夜精品久久久久久久99黑人| 国产欧美一区在线| 免费毛片一区二区三区久久久| 最近中文字幕日韩精品| 欧美一区二区三区视频免费| 在线观看一区二区视频| 欧美性jizz18性欧美| 久久久久久亚洲精品不卡4k岛国| 亚洲欧洲精品一区二区| 久久久999| 亚洲午夜精品网| 亚洲福利小视频| 国产伦一区二区三区色一情| 欧美激情aaaa| 欧美制服丝袜| 99精品国产福利在线观看免费| 乱中年女人伦av一区二区| 亚洲女优在线| 日韩视频在线一区| 在线播放一区| 国产网站欧美日韩免费精品在线观看 | 亚洲一区免费| 亚洲高清一区二| 久久精品一区二区三区四区| 99精品欧美一区| 亚洲国产精品va在线看黑人| 国产欧美亚洲精品| 欧美日韩高清区| 美女任你摸久久| 久久久午夜视频| 欧美在线看片| 午夜久久久久久| 亚洲综合社区| 一本久久综合亚洲鲁鲁五月天| 亚洲电影天堂av| 女主播福利一区| 久久香蕉国产线看观看网| 欧美在线视频一区二区三区| 亚洲综合第一页| 久久夜色精品| 欧美在线国产| 欧美一区二区在线免费观看| 亚洲欧美成人在线| 一本色道久久| 一本色道久久综合亚洲二区三区 | 欧美性色视频在线| 欧美精品在线观看一区二区| 欧美精品久久久久久久久老牛影院| 久久综合亚洲社区| 久久亚洲精品视频| 女仆av观看一区| 欧美激情欧美狂野欧美精品| 欧美久久久久久| 欧美日韩亚洲激情| 欧美视频在线看| 国产精品福利在线观看| 欧美日韩三级在线| 国产精品人成在线观看免费| 国产精品性做久久久久久| 国产日韩亚洲| 在线观看一区视频| av成人手机在线| 亚洲欧美综合精品久久成人| 欧美在线观看你懂的| 美国三级日本三级久久99| 亚洲电影免费观看高清完整版| 亚洲人被黑人高潮完整版| 宅男精品视频| 欧美一区二区三区免费观看视频| 久久精品道一区二区三区| 国产精品综合不卡av| 蜜臀av国产精品久久久久| 亚洲国产精品999| 亚洲视频网站在线观看| 久久免费国产| 欧美三级在线| 好看的日韩视频| 一区二区日韩欧美| 久久青青草综合| 亚洲剧情一区二区| 久久久久久成人| 国产精品成人在线| 亚洲第一精品电影| 小处雏高清一区二区三区| 欧美高清不卡| 亚洲欧美日韩精品一区二区 | 亚洲曰本av电影| 免费不卡视频| 国产午夜精品久久久久久免费视| 亚洲国产日韩欧美在线99 | 999在线观看精品免费不卡网站| 亚洲在线观看视频网站| 免费在线成人| 亚洲欧美日韩直播| 欧美日韩综合久久| 亚洲高清免费在线| 欧美在线视频在线播放完整版免费观看 | 久久久久久电影| 一区二区三区你懂的| 免费中文字幕日韩欧美| 国产一区二区三区在线观看网站 | 亚洲美女区一区| 欧美xx视频| 一区视频在线| 久久婷婷成人综合色|