黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

How to detect and avoid memory and resources

系統(tǒng) 2607 0
常見(jiàn)的內(nèi)存泄露演示

作者使用了一個(gè)Forma,每一個(gè)按鈕都會(huì)打開(kāi)一個(gè)子form。按常理,當(dāng)子form被關(guān)閉時(shí),我們都希望它所占有的資源被自動(dòng)釋放。但在這里,作者將在每一個(gè)子form中演示一種泄露的情況。

How to detect and avoid memory and resources leaks in .NET applications 摘譯2

Static references

最明顯的,如果一個(gè)對(duì)象被靜態(tài)字段(field)引用,它永遠(yuǎn)都不會(huì)被釋放。這種情況常見(jiàn)于單鍵模式,因?yàn)樗鼈兺际徐o態(tài)的,要不就是長(zhǎng)時(shí)間駐留的。
這些直接引用往往都是顯而易見(jiàn)的,但真正危險(xiǎn)的都是那些間接引用。因此你需要格外注意引用串。一個(gè)有效的方法就是查看這個(gè)串的根,如果這個(gè)根式靜態(tài)的,那整個(gè)串上的引用都無(wú)法被釋放。

How to detect and avoid memory and resources leaks in .NET applications 摘譯2

如上圖,如果Object1是靜態(tài)的或者長(zhǎng)駐留的,那么這條引用串上的對(duì)象都不被釋放。危險(xiǎn)的是,串很長(zhǎng)時(shí)就很難意識(shí)到它的根是靜態(tài)類型的。比如,如果僅僅注意了一級(jí)深度,那么當(dāng)Object2消失的時(shí)候,Object3和Object4就應(yīng)該被釋放,當(dāng)你很可能忽視了Object1的存在。

建議是慎用靜態(tài)類型,盡可能的不用,否則請(qǐng)格外注意其或其他單鍵對(duì)象的內(nèi)存駐留時(shí)間。

一種具體的風(fēng)險(xiǎn)就是靜態(tài)事件,將在事件泄露演示中闡述。


事件或"lapsed listener"

子form訂閱了main form的事件,以便在main form的通透度(opacity)變化時(shí)得到通知。
    mainForm.OpacityChanged += mainForm_OpacityChanged;
  

問(wèn)題由此產(chǎn)生:OpacityChanged事件創(chuàng)建了一個(gè)由main form到子form的引用:
How to detect and avoid memory and resources leaks in .NET applications 摘譯2
作者在另外一篇文章中討論了 事件和引用的關(guān)系 ,這里只給出了演示圖,和jetTrace截圖:





How to detect and avoid memory and resources leaks in .NET applications 摘譯2


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論