日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

夏虫不可语冰

發(fā)布時(shí)間:2023/12/4 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 夏虫不可语冰 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

此次事件讓我再次體會到了什么是“夏蟲不可語冰”。博客園有些人壓根沒看完你的文章,帶著已有認(rèn)知斷章取義不暇思索上來就是噴。不過,以前也遇到過,現(xiàn)在也慢慢習(xí)慣了。

對于托管堆內(nèi)存泄漏的說法,不管認(rèn)不認(rèn)同,我還是希望我的粉絲們能知道有這么個(gè)定義,有這么一回事。相信你們以后在閱讀文章或與人交流的時(shí)候,還會看到或聽到有人管這種現(xiàn)象叫內(nèi)存泄漏,屆時(shí)也不至于蒙圈。雖然這是個(gè)很小的知識點(diǎn)。

C#中的匿名函數(shù)是頭等對象,可以作為變量使用,也可以作為參數(shù)傳遞。Task.Run 中使用匿名函數(shù)作為參數(shù)就是一個(gè)典型的應(yīng)用場景。如果匿名函數(shù)捕獲了所在類的成員,對外部調(diào)用者來說,這個(gè)類的實(shí)例什么時(shí)候被釋放是無法預(yù)知的(除非你十分清楚這個(gè)類的內(nèi)部實(shí)現(xiàn)),但你知道它最終是會被回收的。有人把這種可能導(dǎo)致對象延遲回收的現(xiàn)象定義為內(nèi)存泄漏,也有很多人不認(rèn)為是內(nèi)存泄漏。這是定義問題,如果你能用一個(gè)詞來更好地定義這種現(xiàn)象也是可以接受的。

Many share the opinion that?managed memory leaks?are not memory leaks at all since they are still referenced and theoretically can be de-allocated. It’s a matter of definition and my point of view is that they are indeed?memory leaks. They hold memory that can’t be allocated for another instance and will eventually cause an out-of-memory exception.

Ref: dwz.date/d48U

很早之前我就看過類似的文章,把匿名方法捕獲類成員導(dǎo)致延遲回收的現(xiàn)象定義為內(nèi)存泄漏。上面引用的這篇是最近閱讀到的一篇,這位外國作者寫了很多 .NET 內(nèi)存管理相關(guān)的文章,都值得一讀。

如果只站在操作系統(tǒng)的角度看內(nèi)存是否被掌控來定義內(nèi)存泄漏,.NET 托管堆幾乎就沒有不被掌控的內(nèi)存占用(托管堆之所以叫“托管”就是 CRL 會自動管理)。而之所以有人定義了托管內(nèi)存泄漏,是因?yàn)閷?CLR 來說,在局部視角不再需要使用的對象依然被其它實(shí)例引用,可能導(dǎo)致 GC 恰巧在搜索 Root 的時(shí)候不能把這個(gè)對象所占內(nèi)存分配給其它實(shí)例。對于 CLR 來說,它對托管對象有全權(quán)“托管”之責(zé)。如果在被引用期間,恰巧 GC 在搜索 Root,就會導(dǎo)致 GC 錯過了一次回收該對象的機(jī)會,此次任務(wù)就“失職”了,只能在下一次搜索時(shí)回收它。但如果使用了本地(局部)變量,就可以避免這種情況。

大部分場景,我們并不需要在意這一點(diǎn)性能,何況這是個(gè)概率很低的事件。但是它值得引起注意,哪怕只有萬分之一的概率。在一些特別的場景下(比如高并發(fā)),遇到這個(gè)問題我們需要知道使用本地變量來優(yōu)化我們的程序。

這個(gè)現(xiàn)象是不是內(nèi)存泄漏,只是個(gè)定義問題,如果覺得這個(gè)定義不妥,可以不認(rèn)同這個(gè)定義。正如 @楚人Le 說的,你也可以把它定義為“空間泄漏”:

我傾向于認(rèn)為這屬于內(nèi)存泄漏。Wikipedia上關(guān)于Memory leak有這樣一句話:“A space leak occurs when a computer program uses more memory than necessary. In contrast to memory leaks, where the leaked memory is never released, the memory consumed by a space leak is released, but later than expected”。如果我們非常較真的話,或許可以使用“空間泄露”這個(gè)詞。當(dāng)計(jì)算機(jī)程序使用超過所需的內(nèi)存時(shí),就會發(fā)生空間泄漏。與內(nèi)存泄漏相比,空間泄漏所消耗的內(nèi)存會被釋放,但會比預(yù)期的要晚。

這只是個(gè)定義,這只是個(gè)定義,這只是個(gè)定義。不必糾結(jié),更沒必要因?yàn)椴徽J(rèn)同就惡語相向。

今天的文章夾雜著一點(diǎn)情緒,請大家見諒。要說一點(diǎn)都不在意那些評論,那肯定是假的,心中多少還是會有些不愉悅的。面對網(wǎng)絡(luò)噴子,如果內(nèi)心不夠強(qiáng)大,還真是不敢隨便發(fā)表文章。這次也讓我意識到,以后有爭議性的文章少寫,大家也是一樣。

自媒體很多大V都經(jīng)歷過這種時(shí)段,和他們相比我這個(gè)蝦兵小卒遇到的這么三兩次不算什么。正如一線碼農(nóng)大佬說的,有忠粉就有黑粉。既然走上這條路,必然也要經(jīng)歷這些,這便是成長。

每每遇到這種事情,就特別想和鐵粉們說聲:感謝!感謝你們一路以來的陪伴、理解、支持和鼓勵,感謝你們愿意和我一起學(xué)習(xí)和成長。

總結(jié)

以上是生活随笔為你收集整理的夏虫不可语冰的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。