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

posts - 297,  comments - 15,  trackbacks - 0

昨天解決了一個隱蔽的內(nèi)存泄漏問題,原因是pthread_create后的僵死線程沒有釋放導(dǎo)致的內(nèi)存持續(xù)增長。
現(xiàn)象是這樣的:短時間內(nèi)程序運(yùn)行正常,但跑了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)存管理錯誤(事實(shí)證明雖然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)存就往上漲一點(diǎn),只是增長速度不是很快,看來是線程的問題了。仔細(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)存。

其實(shí)仔細(xì)想想,valgrind檢查時已經(jīng)提示了pthread_create沒有釋放的問題,只是之前沒引起注意。其實(shí)這樣的問題也只有在長時間運(yùn)行時,慢慢積累這一點(diǎn)點(diǎn)的內(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ù)  更多評論
  
<2025年9月>
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>
            91久久嫩草影院一区二区| 亚洲电影在线播放| 欧美一区二区三区四区视频 | 精品二区视频| 1024日韩| 夜夜嗨av一区二区三区四区| 亚洲午夜精品国产| 新狼窝色av性久久久久久| 久久国产一二区| 欧美成人免费小视频| 亚洲激情在线激情| 亚洲欧美美女| 久久综合九色综合欧美狠狠| 欧美精品成人| 国产婷婷精品| 亚洲免费电影在线观看| 欧美伊人久久| 亚洲精品久久久一区二区三区| 在线视频中文亚洲| 久久嫩草精品久久久久| 欧美日韩精品久久| 韩国av一区| 中文高清一区| 嫩草影视亚洲| 亚洲一区二区三区中文字幕在线| 久久久久久久999| 国产精品久久久久久久久免费| 精品69视频一区二区三区| 亚洲一级片在线观看| 嫩模写真一区二区三区三州| 亚洲天堂av在线免费观看| 欧美成年人视频| 黄页网站一区| 在线观看亚洲一区| 久久精品一区二区三区四区| 亚洲国产精品美女| 欧美一级一区| 欧美亚州韩日在线看免费版国语版| 狠狠色狠狠色综合| 午夜影院日韩| 99精品久久久| 欧美精品一区二区视频 | 亚洲国产欧美不卡在线观看| 欧美亚洲色图校园春色| 国产精品羞羞答答xxdd| 亚洲性视频网址| 亚洲欧洲精品成人久久奇米网| 久久精品国产v日韩v亚洲 | 欧美日韩亚洲国产精品| 亚洲激情偷拍| 欧美3dxxxxhd| 老色鬼久久亚洲一区二区| 国语自产精品视频在线看一大j8| 欧美一区二区三区在线观看| 一区二区三区日韩欧美| 国产精品国产精品| 亚洲免费人成在线视频观看| 亚洲卡通欧美制服中文| 欧美另类女人| 亚洲图片激情小说| 亚洲午夜一区二区三区| 欧美午夜在线一二页| 亚洲欧美亚洲| 欧美一级网站| 在线日本高清免费不卡| 免费日韩av片| 欧美精品久久久久久久久老牛影院| 亚洲激情六月丁香| 91久久久久久| 欧美小视频在线| 午夜欧美大片免费观看| 欧美在线视频网站| 亚洲精品小视频在线观看| 亚洲三级毛片| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ入口 | 欧美va亚洲va国产综合| 亚洲美女网站| 亚洲午夜激情网页| 黄色精品一区| 91久久在线播放| 欧美午夜一区二区三区免费大片 | 欧美大秀在线观看| 亚洲一区不卡| 亚洲国产精品成人综合| 欧美一区91| 久久久久九九九九| 99re8这里有精品热视频免费 | 欧美片在线观看| 亚洲欧美久久久久一区二区三区| 亚洲欧美中日韩| 亚洲国产精品视频一区| 在线综合+亚洲+欧美中文字幕| 国产欧美日韩一区二区三区在线 | 欧美视频一区二区三区四区| 久久不见久久见免费视频1| 免费成人av资源网| 午夜久久黄色| 麻豆国产精品777777在线| 亚洲一卡二卡三卡四卡五卡| 久久丁香综合五月国产三级网站| 日韩视频在线一区| 久久久久久97三级| 亚洲欧美国产制服动漫| 免费亚洲电影在线观看| 久久都是精品| 欧美日韩国产黄| 老色批av在线精品| 国产精品久久久久久亚洲调教 | 91久久精品日日躁夜夜躁国产| 亚洲午夜在线| 一区二区三区.www| 噜噜噜噜噜久久久久久91| 欧美一级一区| 欧美日韩一区二区在线观看视频 | 欧美黑人在线观看| 国产亚洲福利| 亚洲欧美日韩电影| 亚洲午夜在线观看| 欧美激情视频在线免费观看 欧美视频免费一 | 国产综合色产| 亚洲性线免费观看视频成熟| 日韩视频一区二区三区在线播放 | 牛人盗摄一区二区三区视频| 久久精品最新地址| 国产欧美综合一区二区三区| 亚洲免费观看高清完整版在线观看熊 | 亚洲二区三区四区| 亚洲欧美久久| 亚洲影院在线观看| 欧美区在线播放| 亚洲福利一区| 亚洲国产精品激情在线观看| 欧美在线一二三| 久久国产色av| 国产色爱av资源综合区| 欧美一二三区精品| 久久精品视频在线看| 国产日本亚洲高清| 欧美一区日本一区韩国一区| 久久国产精品毛片| 国产一区二区三区直播精品电影| 欧美有码在线观看视频| 老司机午夜精品视频| 亚洲高清123| 欧美精品黄色| 亚洲小少妇裸体bbw| 久久精品免费看| 在线国产日韩| 欧美精选在线| 在线视频你懂得一区| 亚洲欧美www| 国产欧美日韩另类视频免费观看| 午夜久久黄色| 欧美成人免费一级人片100| 91久久综合| 欧美日韩国内自拍| 午夜精品久久久久| 男男成人高潮片免费网站| 亚洲日本欧美在线| 国产精品久久久久久户外露出| 欧美亚洲系列| 亚洲黄色在线看| 亚洲欧美日韩一区二区在线 | 美女性感视频久久久| 亚洲三级视频| 久久精品欧洲| 亚洲卡通欧美制服中文| 国产精品国产三级国产普通话蜜臀 | 亚洲欧美日韩在线播放| 久久久综合精品| 日韩一区二区久久| 国产女主播在线一区二区| 免费av成人在线| 亚洲在线国产日韩欧美| 亚洲第一黄色网| 午夜激情亚洲| 亚洲精品久久久久久久久| 国产深夜精品| 欧美日韩亚洲三区| 久久久久久久久久看片| 亚洲视频 欧洲视频| 亚洲高清自拍| 玖玖玖免费嫩草在线影院一区| 一区二区高清视频| 亚洲一区二区免费| 亚洲黑丝在线| 久久久综合网| 亚洲欧美日本视频在线观看| 精品动漫3d一区二区三区免费版 | 免费一区视频| 亚洲欧美日韩国产中文| 日韩视频一区二区在线观看| 海角社区69精品视频| 欧美三级韩国三级日本三斤| 久久综合影视| 久久精品一区中文字幕| 午夜一区二区三视频在线观看| 日韩亚洲视频在线| 亚洲青色在线| 欧美国产先锋|