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

posts - 297,  comments - 15,  trackbacks - 0

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

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

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

 

Linux man page 里有已經(jīng)說明了這個問題:
    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.

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

 

解決辦法

代碼
 1 // 最簡單的辦法,在線程執(zhí)行結(jié)束后調(diào)用pthread_detach讓他自己釋放
 2 pthread_detach(pthread_self());
 3 
 4 
 5 // 或者創(chuàng)建線程前設(shè)置 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行的那種方法最簡單,在線程函數(shù)尾部加上這句話就可以將線程所占用的資源給釋放掉;或者像 5-11 所示的方法設(shè)置detach屬性,這樣也會在線程return/pthread_exit后釋放內(nèi)存。

其實仔細(xì)想想,valgrind檢查時已經(jīng)提示了pthread_create沒有釋放的問題,只是之前沒引起注意。其實這樣的問題也只有在長時間運行時,慢慢積累這一點點的內(nèi)存才會暴露出來,看來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 閱讀(3133) 評論(2)  編輯 收藏 引用 所屬分類: Linux_Coding

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

常用鏈接

留言簿(10)

隨筆分類(307)

隨筆檔案(297)

algorithm

Books_Free_Online

C++

database

Linux

Linux shell

linux socket

misce

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

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>
            亚洲男女自偷自拍| 亚洲激情综合| 欧美一区不卡| 伊人久久成人| 亚洲国产一区二区三区在线播 | 国产欧美日韩亚洲| 久久精品国产精品亚洲精品| 久久亚洲一区二区| 99在线视频精品| 亚洲午夜久久久| 激情综合色综合久久综合| 亚洲高清视频一区| 国产精品久久二区二区| 久久免费国产精品| 欧美日韩aaaaa| 久久精品亚洲一区二区| 蜜臀99久久精品久久久久久软件 | 国产欧美精品一区二区三区介绍 | 一本久道久久综合婷婷鲸鱼| 亚洲专区在线| 亚洲国产精品一区在线观看不卡| 亚洲麻豆一区| 黄色亚洲精品| 中文一区在线| 91久久久国产精品| 欧美一二三区精品| 欧美一区=区| 一本色道久久综合狠狠躁的推荐| 亚洲欧美日韩中文播放| 亚洲免费观看视频| 欧美在线视频一区二区| 亚洲小说春色综合另类电影| 毛片精品免费在线观看| 久久xxxx精品视频| 欧美性猛交99久久久久99按摩| 麻豆国产精品777777在线| 国产精品伦一区| 亚洲欧洲精品一区二区三区 | 国模精品娜娜一二三区| 亚洲无吗在线| 一区二区三区日韩欧美| 欧美成年视频| 嫩草伊人久久精品少妇av杨幂| 国产乱码精品一区二区三区av| 亚洲九九精品| 亚洲精品一区二区在线观看| 久久久久久九九九九| 久久精品国产99国产精品| 国产精品久久久久999| 亚洲毛片播放| 一本久久a久久免费精品不卡| 久久综合五月| 欧美插天视频在线播放| 国内精品视频在线播放| 先锋影音久久久| 西瓜成人精品人成网站| 国产精品毛片a∨一区二区三区| 亚洲青色在线| 在线亚洲电影| 欧美三级视频在线观看| 在线视频你懂得一区二区三区| 亚洲精品欧洲| 欧美福利专区| 亚洲精品一区二区三区蜜桃久| 亚洲免费电影在线| 欧美日韩一区二区三区四区在线观看| 亚洲国产欧美精品| 99视频一区二区三区| 欧美日韩国产欧美日美国产精品| 亚洲区一区二区三区| 亚洲视频第一页| 欧美色图麻豆| 亚洲综合色在线| 久久久久网站| 亚洲精品欧美激情| 欧美天天视频| 小嫩嫩精品导航| 免费日韩成人| 99视频精品免费观看| 国产精品视频成人| 久久国产精品久久精品国产| 欧美阿v一级看视频| 99精品视频免费| 欧美视频一区二区三区| 性刺激综合网| 亚洲国产成人精品女人久久久| 一区二区福利| 亚洲另类一区二区| 亚洲一区在线播放| 国内精品免费午夜毛片| 欧美激情第六页| 亚洲一区二区视频在线| 蜜桃av一区二区在线观看| 一本一本a久久| 国产一区二区成人久久免费影院| 免费的成人av| 亚洲免费在线视频| 亚洲第一精品影视| 午夜视频在线观看一区二区三区| 在线视频观看日韩| 国产精品免费区二区三区观看| 久久精品国产在热久久| 一本色道久久88综合日韩精品| 久久色在线观看| 亚洲专区一区| 亚洲精品一区二区三区蜜桃久 | 欧美高清日韩| 欧美一区二区三区精品| 99精品99久久久久久宅男| 免费成人在线视频网站| 欧美一区二区三区免费大片| 99香蕉国产精品偷在线观看| 狠狠色狠狠色综合日日91app| 欧美天天在线| 欧美精品亚洲| 免费成人高清视频| 久久av一区二区| 亚洲午夜精品一区二区| 亚洲精品在线观看视频| 欧美成人精品| 狼狼综合久久久久综合网| 久久成人综合网| 午夜国产精品视频免费体验区| 亚洲作爱视频| 亚洲麻豆视频| 亚洲日本精品国产第一区| 在线成人免费观看| 好看的av在线不卡观看| 国产香蕉97碰碰久久人人| 国产精品日本一区二区 | 久久久不卡网国产精品一区| 午夜精品一区二区在线观看 | 亚洲第一级黄色片| 蜜臀久久久99精品久久久久久| 欧美在线网站| 欧美在线视频免费播放| 欧美一区二区三区精品电影| 欧美亚洲日本国产| 午夜精品视频在线观看一区二区 | 日韩视频免费观看| 亚洲免费黄色| 在线视频你懂得一区二区三区| 亚洲麻豆视频| 亚洲午夜精品国产| 亚洲一区二区三区影院| 亚洲欧美春色| 香蕉亚洲视频| 久久久噜噜噜| 欧美aⅴ99久久黑人专区| 亚洲国产99| 亚洲免费久久| 亚洲一区二区四区| 欧美在线free| 香蕉久久a毛片| 久久深夜福利免费观看| 欧美顶级艳妇交换群宴| 亚洲欧洲在线一区| 一区二区三区久久久| 欧美一区二粉嫩精品国产一线天| 久久精品一区二区三区不卡牛牛 | 欧美另类99xxxxx| 国产精品大片wwwwww| 国产一区二区在线观看免费播放 | 国产精品免费在线| 国产视频精品网| 亚洲第一精品在线| 一本色道久久综合亚洲精品按摩 | 亚洲欧美激情诱惑| 久久蜜桃香蕉精品一区二区三区| 欧美二区在线播放| 亚洲视频电影图片偷拍一区| 久久国产主播| 欧美日韩播放| 韩国自拍一区| 亚洲午夜精品久久久久久浪潮| 久久久一区二区三区| 亚洲国产精品久久久久秋霞蜜臀| 亚洲午夜一级| 欧美成人一区二区| 国产伦精品一区二区三区高清版 | 亚洲小视频在线| 毛片基地黄久久久久久天堂| 99在线精品观看| 久久久久国产成人精品亚洲午夜| 欧美日韩精品免费观看视一区二区 | 亚洲在线中文字幕| 欧美亚洲一级| 欧美视频日韩| 亚洲精品乱码久久久久久日本蜜臀 | 亚洲乱亚洲高清| 欧美在线在线| 99亚洲一区二区| 久久综合狠狠综合久久激情| 国产精品久久网站| 亚洲精品日韩欧美| 久久一本综合频道| 亚洲欧美变态国产另类| 欧美区国产区| 亚洲精品久久久一区二区三区| 亚洲欧美国产高清va在线播|