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

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

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

常用鏈接

留言簿(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>
            一本色道久久加勒比88综合| 久久综合网hezyo| 久久高清免费观看| 亚洲欧美99| 国产日韩精品在线观看| 欧美一激情一区二区三区| 欧美精品在线一区| 亚洲免费视频中文字幕| 亚洲精品小视频| 欧美午夜精品久久久久免费视| 夜夜嗨av一区二区三区四季av| 亚洲国产精品悠悠久久琪琪| 亚洲欧美日韩一区| 永久免费视频成人| 亚洲日本精品国产第一区| 久久久亚洲高清| 国产亚洲欧美一区二区| 欧美国产日韩一区二区| 国产精品推荐精品| 免费观看亚洲视频大全| 欧美日韩三级在线| 女人色偷偷aa久久天堂| 欧美性一区二区| 欧美成人一区二区在线| 欧美午夜欧美| 亚洲第一精品在线| 国内精品写真在线观看| 9久草视频在线视频精品| 狠狠色丁香婷婷综合久久片| 日韩亚洲一区在线播放| 亚洲第一区在线| 久久国产精品久久精品国产| 亚洲综合色网站| 亚洲国产成人久久综合一区| 欧美日韩成人一区二区三区| 欧美77777| 亚洲第一页自拍| 欧美在线一二三区| 欧美影院成人| 红桃视频亚洲| 久久久国产精彩视频美女艺术照福利| 亚洲网站在线播放| 欧美三级视频在线播放| 亚洲天堂黄色| 久久av一区二区三区| 国产麻豆综合| 欧美一区二区视频免费观看 | 久久av一区二区三区| 欧美一区日韩一区| 韩国美女久久| 欧美精彩视频一区二区三区| 欧美高潮视频| 在线亚洲电影| 国产日本欧美一区二区三区在线| 先锋影音国产一区| 欧美丰满少妇xxxbbb| 日韩网站在线| 欧美一区二区三区免费观看 | 欧美激情第10页| 亚洲国内自拍| 欧美在线视频一区二区三区| 在线播放中文字幕一区| 欧美人妖在线观看| 欧美在线视频免费| 一本综合精品| 欧美xart系列在线观看| 亚洲色在线视频| 一区二区自拍| 国模吧视频一区| 国产精品videosex极品| 欧美国产一区视频在线观看| 欧美一区二区精美| 亚洲一区二区在| 亚洲日本乱码在线观看| 欧美96在线丨欧| 久久综合久久综合久久综合| 亚洲淫片在线视频| 一本到12不卡视频在线dvd| 亚洲风情在线资源站| 黄网站色欧美视频| 国产午夜久久久久| 国产九九精品| 国产一区二区| 国产亚洲激情在线| 国产揄拍国内精品对白| 国模私拍一区二区三区| 国产在线精品一区二区中文| 国产日韩精品一区| 在线观看日韩av电影| 在线成人激情视频| 日韩一级黄色大片| 午夜欧美大片免费观看| 久久国产手机看片| 老司机一区二区| 亚洲激情二区| 亚洲午夜高清视频| 久久狠狠一本精品综合网| 久热精品视频在线观看一区| 欧美xart系列在线观看| 国产精品日韩欧美一区二区三区 | 国产日韩亚洲欧美| 国产情人综合久久777777| 在线日本成人| 销魂美女一区二区三区视频在线| 久久亚洲综合色| 在线视频日韩| 欧美成人精品1314www| 国内精品久久久久影院 日本资源| 亚洲国产成人porn| 欧美一区二区精品久久911| 欧美大片一区二区三区| 亚洲男人第一av网站| 欧美日韩一区二区三区四区五区| 国产一区二区中文| 午夜精品久久久久久久久久久久久| 免费成人性网站| 久久av在线看| 黑人极品videos精品欧美裸| 亚洲一区免费观看| 夜夜嗨av色一区二区不卡| 老司机67194精品线观看| 国产亚洲成精品久久| 久久精品在线| 久久国产精品99国产| 欧美性开放视频| 亚洲欧美在线一区二区| 亚洲午夜日本在线观看| 国产精品久久综合| 久久er精品视频| 久久综合狠狠综合久久激情| 精品成人乱色一区二区| 久久亚洲一区二区| 欧美国产免费| 欧美在线视频一区二区三区| 欧美一区在线视频| 亚洲欧洲日产国码二区| 99av国产精品欲麻豆| 国产精品网站一区| 免费成人毛片| 国产精品日韩高清| 欧美第一黄色网| 欧美片在线观看| 久久久国产精品一区| 欧美午夜三级| 香蕉久久夜色精品| 欧美专区亚洲专区| 国产欧美日韩综合一区在线播放 | 性色一区二区| 亚洲高清视频在线观看| 亚洲国产精品一区二区www| 欧美成人精品一区二区| 亚洲免费电影在线| 亚洲欧美在线另类| 亚洲黄色视屏| 一区二区三区四区五区精品| 国产精品男gay被猛男狂揉视频| 中文精品视频一区二区在线观看| 亚洲一本大道在线| 永久免费毛片在线播放不卡| 免费在线欧美黄色| 国产精品久久久久久久久久三级| 久久欧美中文字幕| 欧美四级电影网站| 亚洲国产视频一区二区| 国产欧美精品| 亚洲午夜电影在线观看| 国产精品一区二区你懂的| 亚洲国产精品久久人人爱蜜臀| 国产午夜精品一区二区三区欧美 | 亚洲精品在线视频观看| 国产视频精品va久久久久久| 欧美伊人久久| 国产精品草莓在线免费观看| 亚洲黄网站在线观看| 国产女主播一区二区| 99这里只有精品| 亚洲色无码播放| 欧美视频中文字幕| 亚洲午夜精品久久| 久久不射2019中文字幕| 国产欧美日韩综合| 久久国产成人| 免费在线亚洲欧美| 日韩视频在线一区| 欧美日韩和欧美的一区二区| 亚洲国产欧美在线人成| av不卡在线| 国产精品日本欧美一区二区三区| 日韩视频一区| 久久久久久久久一区二区| 在线观看福利一区| 欧美日韩ab| 欧美一区免费视频| 欧美一区二区精品久久911| 激情综合亚洲| 欧美日韩精品免费| 久久成人综合视频| 亚洲精品无人区| 美女爽到呻吟久久久久| 一区二区三区欧美视频|