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

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 閱讀(3156) 評論(2)  編輯 收藏 引用 所屬分類: Linux_Coding

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

常用鏈接

留言簿(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>
            亚洲黄色成人久久久| 亚洲国产精品一区二区久| 精品二区视频| 日韩网站在线| 欧美一二三视频| 亚洲电影天堂av| 亚洲在线观看免费| 另类亚洲自拍| 国产精品网站在线播放| 最新国产成人av网站网址麻豆| 亚洲欧美在线x视频| 女同性一区二区三区人了人一| 一区二区三区精品国产| 美女黄毛**国产精品啪啪| 国产精品久久久久久影视| 亚洲人永久免费| 久久精品国产精品亚洲综合| 亚洲精品欧美在线| 久久久久久久网| 国产精品一区在线播放| 一区二区欧美日韩| 欧美成年人网| 欧美在线观看一二区| 欧美日韩在线一二三| 亚洲清纯自拍| 老司机久久99久久精品播放免费 | 亚洲承认在线| 性色av一区二区三区在线观看| 亚洲国产综合91精品麻豆| 久久av二区| 国产精品一区二区三区乱码| 夜夜嗨av色综合久久久综合网| 免费观看成人| 久久精品国产亚洲精品| 国产精品免费网站| 亚洲午夜免费视频| 亚洲茄子视频| 欧美成va人片在线观看| 尤物99国产成人精品视频| 久久久久久久999| 亚洲欧美一区二区三区久久| 国产精品国产三级国产a| 日韩一级黄色片| 亚洲国产精品99久久久久久久久| 久久久久久日产精品| 国内精品久久久久影院薰衣草| 欧美一区二区三区精品电影| 亚洲图片欧洲图片日韩av| 欧美日韩国产区一| 亚洲最新在线| 亚洲精品一区二区三区av| 欧美高清在线视频| 亚洲三级影片| 亚洲国产日韩欧美在线99| 欧美不卡在线| 日韩视频在线免费| 亚洲日本免费| 欧美日本韩国一区二区三区| 日韩视频三区| 亚洲精品久久久久久久久久久久| 欧美精品v日韩精品v韩国精品v| 亚洲三级免费观看| 亚洲精品国产精品国自产观看浪潮 | 亚洲欧美国产制服动漫| 亚洲视频观看| 国产精品另类一区| 欧美在线在线| 久久国产精品免费一区| 影音国产精品| 欧美激情一区二区三区四区| 欧美成ee人免费视频| 99亚洲精品| 妖精成人www高清在线观看| 国产精品成人观看视频免费| 亚洲欧美综合精品久久成人| 亚洲欧美自拍偷拍| 狠狠色丁香久久婷婷综合丁香| 毛片一区二区三区| 欧美电影免费观看高清| 一区二区三区欧美| 亚洲字幕一区二区| 经典三级久久| 亚洲欧洲午夜| 国产精品免费福利| 久久久噜噜噜| 欧美顶级艳妇交换群宴| 亚洲先锋成人| 欧美一区二区三区免费视频| 在线日韩视频| 99精品国产在热久久| 国产精品亚洲不卡a| 老司机免费视频一区二区| 欧美激情国产高清| 午夜精品久久久久久久久| 久久精品久久综合| 夜夜嗨av色综合久久久综合网| 亚洲一区3d动漫同人无遮挡| 好看的av在线不卡观看| 亚洲欧洲视频在线| 国产欧美在线| 亚洲黄色有码视频| 国产精品欧美风情| 欧美顶级少妇做爰| 国产精品a久久久久| 久久阴道视频| 欧美日韩视频| 另类激情亚洲| 欧美视频日韩视频在线观看| 久久久av水蜜桃| 欧美精品在欧美一区二区少妇| 欧美中文日韩| 欧美高清视频一区二区| 久久爱www| 欧美精品久久一区二区| 久久精品一区四区| 欧美日韩免费视频| 久久综合久色欧美综合狠狠| 欧美日韩亚洲精品内裤| 久久综合免费视频影院| 国产精品jvid在线观看蜜臀| 蜜桃av一区二区| 国产精品视频内| 亚洲人成艺术| 精品999久久久| 亚洲伊人色欲综合网| 91久久国产自产拍夜夜嗨| 香蕉久久一区二区不卡无毒影院 | 国产精品你懂的在线欣赏| 欧美黄污视频| 国产亚洲一区二区三区在线播放| 亚洲精品国产精品国产自| 极品尤物一区二区三区| 亚洲一级高清| 夜夜嗨av一区二区三区网页| 久久久久久91香蕉国产| 欧美亚洲一区二区三区| 欧美日韩国产成人在线| 免费视频久久| 国产一区在线观看视频| 国产精品99久久久久久有的能看| 亚洲精品视频在线观看免费| 久久久久久成人| 久久国产精品第一页| 国产精品二区影院| 亚洲精品国久久99热| 最新精品在线| 久久久久久久综合色一本| 久久精品国产69国产精品亚洲 | 欧美一区二区观看视频| 亚洲一区二区三区中文字幕| 欧美激情性爽国产精品17p| 美日韩精品视频免费看| 国产一区二区欧美| 午夜欧美理论片| 欧美亚洲日本国产| 国产精品美女久久久| a91a精品视频在线观看| 一本一本a久久| 欧美国产在线电影| 亚洲电影网站| 亚洲理论在线观看| 欧美不卡高清| 亚洲黄色天堂| 99精品国产福利在线观看免费| 男女精品视频| 欧美激情亚洲一区| 亚洲精品久久久久久久久久久久久| 久久在线观看视频| 欧美成人伊人久久综合网| 1000精品久久久久久久久| 久久青青草综合| 欧美77777| 亚洲国产小视频| 男人的天堂成人在线| 亚洲高清av| 99精品欧美一区二区三区综合在线| 欧美精品一区在线播放| 亚洲伦理中文字幕| 亚洲一区二区三区四区中文 | 国产一区二区三区久久精品| 小黄鸭精品密入口导航| 久久久999成人| 伊大人香蕉综合8在线视| 久久亚洲影音av资源网| 欧美高清视频在线| 亚洲美女中文字幕| 欧美日韩一区二区视频在线| 亚洲四色影视在线观看| 欧美与黑人午夜性猛交久久久| 国产在线精品成人一区二区三区| 久久久久久有精品国产| 亚洲二区在线视频| 亚洲婷婷综合久久一本伊一区| 国产精品国产三级国产a| 午夜精品久久久久久久久久久| 久久综合久色欧美综合狠狠| 亚洲黄色大片| 国产精品电影观看| 欧美专区在线播放| 亚洲激情成人网|