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

posts - 297,  comments - 15,  trackbacks - 0

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

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

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

 

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

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

 

解決辦法

代碼
 1 // 最簡(jiǎn)單的辦法,在線程執(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行的那種方法最簡(jiǎn)單,在線程函數(shù)尾部加上這句話就可以將線程所占用的資源給釋放掉;或者像 5-11 所示的方法設(shè)置detach屬性,這樣也會(huì)在線程return/pthread_exit后釋放內(nèi)存。

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

FeedBack:
# re: 解決Linux pthread_create內(nèi)存泄漏問(wèn)題[未登錄](méi)
2010-06-02 17:08 | jack
不錯(cuò),支持一個(gè)。  回復(fù)  更多評(píng)論
  
# re: 解決Linux pthread_create內(nèi)存泄漏問(wèn)題
2012-05-03 10:07 | 朱先生
我試過(guò),每一種方法有的時(shí)候不行。
第二種是可以的。
  回復(fù)  更多評(píng)論
  
<2009年12月>
293012345
6789101112
13141516171819
20212223242526
272829303112
3456789

常用鏈接

留言簿(10)

隨筆分類(307)

隨筆檔案(297)

algorithm

Books_Free_Online

C++

database

Linux

Linux shell

linux socket

misce

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

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

搜索

  •  

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            国产精品手机在线| 国产精品久久77777| 久久综合伊人| 免费高清在线视频一区·| 女同一区二区| 欧美另类高清视频在线| 欧美日韩美女在线| 欧美午夜视频一区二区| 国产精品日韩欧美综合 | 久久精品国产久精国产一老狼 | 蜜臀av在线播放一区二区三区| 久久人人看视频| 欧美aⅴ99久久黑人专区| 欧美国产日本在线| 日韩一区二区高清| 亚洲欧美在线高清| 久久久免费观看视频| 欧美电影专区| 国产精品成av人在线视午夜片| 国产精品一区二区男女羞羞无遮挡 | 亚洲在线观看免费视频| 欧美在线视频全部完| 麻豆精品传媒视频| 亚洲精品永久免费精品| 亚洲免费在线视频一区 二区| 欧美在线日韩在线| 欧美国产另类| 国产女主播在线一区二区| 一区在线观看| 亚洲午夜激情| 久久久亚洲午夜电影| 亚洲国产视频一区二区| 一级成人国产| 久久婷婷丁香| 欧美性色视频在线| 伊人久久亚洲美女图片| 一区二区三区高清在线观看| 久久大逼视频| 亚洲欧洲日本在线| 亚洲欧美在线x视频| 欧美国产激情| 国产一区二区三区高清| 99热精品在线| 麻豆精品网站| 在线综合亚洲欧美在线视频| 久久久久久夜精品精品免费| 欧美日韩一区二区三| 在线欧美三区| 欧美一区二区三区精品| 亚洲国产精品一区二区尤物区 | 亚洲视频免费看| 久久婷婷亚洲| 亚洲视频一二区| 欧美成人精品影院| 国产在线视频欧美| 亚洲制服少妇| 欧美韩日精品| 久久精彩视频| 国产精品美女久久久浪潮软件 | 99精品欧美一区二区蜜桃免费| 欧美在线亚洲在线| 99精品国产福利在线观看免费| 久久久亚洲综合| 国产精品欧美日韩一区二区| 亚洲免费观看视频| 牛牛国产精品| 欧美在线一级va免费观看| 国产精品久久久久久久久免费樱桃| 亚洲国产综合在线| 老司机一区二区三区| 亚洲一区精品视频| 欧美色视频一区| 日韩视频中文| 亚洲二区精品| 久热精品视频| 加勒比av一区二区| 久久久国产午夜精品| 亚洲欧美成人综合| 国产精品高潮呻吟久久av无限| 亚洲理论电影网| 欧美激情1区| 六月天综合网| …久久精品99久久香蕉国产| 久久久久久噜噜噜久久久精品| 亚洲素人一区二区| 欧美午夜不卡在线观看免费| 中文在线一区| 夜夜嗨av一区二区三区| 欧美日韩a区| 亚洲色图在线视频| 一本到12不卡视频在线dvd| 欧美伦理在线观看| 99精品视频一区| 亚洲美女视频在线观看| 欧美精品免费观看二区| 一本色道久久88综合日韩精品| 亚洲国产老妈| 欧美猛交免费看| 一区二区三区视频在线观看| 亚洲肉体裸体xxxx137| 欧美另类女人| 亚洲在线网站| 亚洲伊人网站| 国产亚洲成av人片在线观看桃| 久久本道综合色狠狠五月| 欧美一级午夜免费电影| 国产一区二区三区日韩| 老司机免费视频一区二区三区| 久久久久久久久一区二区| 亚洲国内自拍| 亚洲免费电影在线观看| 国产精品久久久一区二区三区| 亚洲欧美综合网| 欧美与黑人午夜性猛交久久久| 韩日视频一区| 亚洲国产经典视频| 欧美日韩免费一区二区三区| 亚洲女人天堂成人av在线| 欧美亚洲日本一区| 1024成人网色www| 亚洲激情国产| 国产精品乱码人人做人人爱| 久久久99精品免费观看不卡| 久久日韩精品| 亚洲视频一区在线| 欧美一区二区三区成人| 亚洲国产精品久久人人爱蜜臀| 亚洲精品欧美日韩专区| 国产精品裸体一区二区三区| 久久综合给合| 欧美另类视频| 久久久久久9999| 欧美成人精品1314www| 亚洲男人的天堂在线| 久久精品天堂| 这里只有精品在线播放| 香蕉精品999视频一区二区| 亚洲国产欧美日韩精品| 亚洲图片你懂的| 亚洲国产mv| 亚洲午夜高清视频| 亚洲福利专区| 亚洲性夜色噜噜噜7777| 亚洲国产欧美日韩精品| 亚洲综合色婷婷| 亚洲精品乱码久久久久久黑人 | 欧美成人精品三级在线观看| 午夜精品久久久久影视| 免费视频最近日韩| 欧美一区视频| 欧美日韩国产一级片| 久久久久国内| 国产精品成人免费精品自在线观看| 久久视频国产精品免费视频在线| 欧美剧在线免费观看网站| 久久久亚洲一区| 欧美特黄一级大片| 欧美激情一区二区三区在线视频| 国产欧美91| 日韩视频在线永久播放| 黄色在线成人| 亚洲一区三区视频在线观看| 日韩视频在线一区二区三区| 久久精品国产免费观看| 性欧美18~19sex高清播放| 欧美高清视频| 免费欧美网站| 国产主播喷水一区二区| 中国日韩欧美久久久久久久久| 亚洲国产成人tv| 久久超碰97中文字幕| 香蕉久久a毛片| 欧美日韩免费在线| 亚洲福利视频在线| 精品成人在线视频| 欧美一区二区高清在线观看| 亚洲一区欧美一区| 欧美区一区二区三区| 欧美国产综合一区二区| 国产综合久久| 午夜精品福利一区二区三区av | 午夜精品福利一区二区蜜股av| 一本色道久久综合亚洲精品婷婷| 久久综合狠狠| 久久婷婷国产综合国色天香| 国产日韩欧美视频在线| 亚洲少妇诱惑| 亚洲无限乱码一二三四麻| 欧美精品一区二区三区在线播放 | 亚洲欧美日韩一区二区| 亚洲欧美另类在线观看| 欧美日韩理论| 99国内精品久久| 一区二区三区日韩欧美精品| 欧美久久一级| 亚洲精品一二三| 亚洲图色在线| 国产精品mv在线观看| 亚洲视频国产视频| 销魂美女一区二区三区视频在线|