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

posts - 297,  comments - 15,  trackbacks - 0

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

最先想到的是malloc/free、new/delete沒有配對,申請的內(nèi)存沒有釋放。于是寫了個跟蹤malloc/free調(diào)用的模塊,不過檢查中并沒有找到未釋放的內(nèi)存。之后懷疑是不是 free then malloc 導致的內(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)存泄漏依然存在!仔細看top的輸出,幾乎是每次創(chuàng)建線程時內(nèi)存就往上漲一點,只是增長速度不是很快,看來是線程的問題了。仔細分析發(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的話,線程的資源會一直得不到釋放而導致內(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)存。

其實仔細想想,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 閱讀(3129) 評論(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ù)  更多評論
  
<2009年6月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

常用鏈接

留言簿(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>
            欧美午夜免费影院| 久久久久久久综合狠狠综合| 中国成人黄色视屏| 欧美午夜久久久| 午夜精品久久久久久久男人的天堂 | 久久久久国产精品午夜一区| 一区精品久久| 最新中文字幕一区二区三区| 欧美福利在线观看| 亚洲欧美国产精品va在线观看 | 亚洲激情视频在线| 欧美亚洲成人精品| 久久久久久免费| 欧美高清在线视频观看不卡| 亚洲欧美日韩成人| 久久精品国产2020观看福利| 亚洲精品社区| 午夜精品久久久久久久久久久久久| 国内精品美女av在线播放| 亚洲国产精品一区二区尤物区 | 欧美乱大交xxxxx| 午夜激情综合网| 久久综合一区| 亚洲一区二区三区影院| 久久爱www久久做| 在线亚洲国产精品网站| 欧美在线亚洲一区| 亚洲网站在线看| 久久亚洲视频| 西西人体一区二区| 欧美激情国产日韩精品一区18| 欧美一级视频精品观看| 欧美v亚洲v综合ⅴ国产v| 性娇小13――14欧美| 欧美大片在线看免费观看| 欧美一级黄色网| 欧美日韩视频不卡| 欧美成人精品影院| 国产亚洲欧美一区二区| 99精品视频一区二区三区| 在线欧美福利| 久久经典综合| 欧美在线国产精品| 欧美日韩一区在线观看| 亚洲高清久久久| 黄色精品一区二区| 性欧美8khd高清极品| 亚洲视频福利| 欧美国产另类| 亚洲国产美女精品久久久久∴| 狠狠干综合网| 欧美一区二区三区在线视频| 亚洲欧美日韩精品在线| 欧美日韩亚洲系列| 亚洲国语精品自产拍在线观看| 亚洲二区三区四区| 欧美在线视频播放| 欧美日韩国产一级| 欧美福利在线| 亚洲高清在线播放| 久久视频一区二区| 久久久精品欧美丰满| 国产日韩欧美亚洲| 亚洲欧美影音先锋| 久久久国产成人精品| 国产视频一区二区三区在线观看| 亚洲午夜久久久| 性做久久久久久| 欧美午夜精品理论片a级按摩 | 亚洲美女av网站| 夜夜嗨av一区二区三区| 欧美久色视频| 在线亚洲精品福利网址导航| 亚洲午夜精品久久久久久app| 欧美伦理在线观看| 一区二区三区日韩精品| 亚洲一区二区三区三| 国产精品视频福利| 久久久久91| 欧美激情久久久| 夜夜爽夜夜爽精品视频| 欧美视频网址| 欧美亚洲综合另类| 欧美成人一区二区在线| 日韩午夜一区| 国产九九精品视频| 久久久综合精品| 91久久精品国产91性色 | 国产日韩欧美精品| 久久久久久亚洲精品中文字幕| 免费日韩成人| 亚洲一区二区三区四区五区黄 | 欧美成人精品激情在线观看| 亚洲美女毛片| 久久九九热re6这里有精品 | 欧美人与禽性xxxxx杂性| 亚洲午夜精品一区二区三区他趣| 久久精品国产一区二区三| 亚洲成人在线视频播放| 欧美性片在线观看| 久久精品国产99国产精品| 亚洲另类黄色| 麻豆91精品| 性欧美video另类hd性玩具| 1769国内精品视频在线播放| 国产精品久久久久久久一区探花| 久久久久久久高潮| 亚洲视频每日更新| 亚洲国产美国国产综合一区二区| 欧美在线三级| 一区二区精品在线| 亚洲国产三级在线| 国内外成人免费激情在线视频| 欧美激情精品久久久久| 久久精品国产亚洲精品| 99精品国产福利在线观看免费| 老司机成人网| 久久精品在线| 亚洲永久精品大片| 夜夜精品视频| 亚洲人成艺术| 极品av少妇一区二区| 欧美韩国日本综合| 久久久精彩视频| 亚洲综合日韩在线| 一片黄亚洲嫩模| 亚洲人体影院| 亚洲第一网站免费视频| 看片网站欧美日韩| 欧美在线视频网站| 欧美一区2区视频在线观看| 亚洲视频一二三| 亚洲深夜影院| 亚洲一级免费视频| 亚洲视频在线观看免费| 日韩亚洲精品在线| 一本色道久久99精品综合| 日韩一区二区免费高清| 亚洲老司机av| 一本久久综合亚洲鲁鲁| 99国产精品久久久久久久成人热 | 欧美老女人xx| 欧美日韩国产探花| 欧美视频在线一区| 国产精品二区在线| 国产欧美在线| 国内精品福利| 亚洲国产婷婷香蕉久久久久久| 在线精品视频免费观看| 亚洲国产福利在线| 亚洲每日在线| 亚洲伊人观看| 久久九九99| 欧美高清视频在线观看| 亚洲欧洲精品一区二区三区波多野1战4| 欧美激情黄色片| 一本在线高清不卡dvd | 亚洲九九精品| 亚洲一区二区在线免费观看视频| 亚洲香蕉成视频在线观看| 欧美影院视频| 欧美国产日本高清在线| 欧美色大人视频| 国产亚洲视频在线观看| 亚洲第一页中文字幕| 宅男噜噜噜66国产日韩在线观看| 亚洲欧美日韩国产中文| 美女网站久久| 亚洲一区二区三区久久| 国产精品成人国产乱一区| 国产麻豆成人精品| 一区二区三区亚洲| 一区二区三区四区国产| 久久久久.com| 亚洲手机在线| 亚洲欧美日本伦理| 欧美国产欧美亚洲国产日韩mv天天看完整 | 亚洲自拍偷拍福利| 久久伊人亚洲| 国产精品第一页第二页第三页| 激情懂色av一区av二区av| 一区二区三区四区在线| 久久综合激情| 亚洲午夜国产成人av电影男同| 久久综合伊人77777| 国产精品入口夜色视频大尺度| 亚洲欧洲日本专区| 欧美自拍丝袜亚洲| 亚洲精品久久久蜜桃| 久久精品国产欧美亚洲人人爽| 欧美日韩黄色大片| 亚洲人人精品| 亚洲高清视频在线观看| 性色av一区二区三区红粉影视| 欧美精品一区二区视频 | 免费视频一区| 国内外成人在线视频| 午夜精品久久久久久久99樱桃| 亚洲国产高清aⅴ视频| 久久久久88色偷偷免费|