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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

NLog源码解读——StringBuilderPool

發(fā)布時間:2023/12/4 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 NLog源码解读——StringBuilderPool 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

剛剛騷情的跑了下NLog測試,,,,,一篇文章就那么Crash了~~~
好吧,這次簡化下,直接進入正題,有關(guān)GC的東東參考網(wǎng)上大部分文章吧。

源碼分析

// StringBuilder 的建立也會耗費大量的資源,因此共用他們,使用這個類來管理池子 //需要了從這里獲取一個,用完自動釋放 ItemHolder 即可釋放會池子 // 例如 using (var itemHolder = pool.Acquire()){} internal class StringBuilderPool{private StringBuilder _fastPool;private readonly StringBuilder[] _slowPool;private readonly int _maxBuilderCapacity;/// <summary>/// Constructor/// </summary>/// <param name="poolCapacity">Max number of items</param>/// <param name="initialBuilderCapacity">Initial StringBuilder Size</param>/// <param name="maxBuilderCapacity">Max StringBuilder Size</param>public StringBuilderPool(int poolCapacity, int initialBuilderCapacity = 1024, int maxBuilderCapacity = 512 * 1024){//一個快速池子,一直保持_fastPool = new StringBuilder(10 * initialBuilderCapacity);// 一個慢速池子,如果快速池子被占用,則從慢速池子取一個_slowPool = new StringBuilder[poolCapacity];for (int i = 0; i < _slowPool.Length; ++i){_slowPool[i] = new StringBuilder(initialBuilderCapacity);}_maxBuilderCapacity = maxBuilderCapacity;}/// <summary>/// Takes StringBuilder from pool/// </summary>/// <returns>Allow return to pool</returns>public ItemHolder Acquire(){//1.come on baby,先嘗試分配快速池子StringBuilder item = _fastPool;//2.如果你幸運的拿到快速池子,則盡快把快速池子置空,不要讓別人搶到了,否則,你就必須進慢速池子取了if (item == null || item != Interlocked.CompareExchange(ref _fastPool, null, item)){//3.你好,兄弟,你已經(jīng)進入慢車道,來,一個個給你試試能用不for (int i = 0; i < _slowPool.Length; i++){item = _slowPool[i];if (item != null && item == Interlocked.CompareExchange(ref _slowPool[i], null, item)){//4.啊哈,發(fā)現(xiàn)一個慢速的,來,給你,別嫌棄return new ItemHolder(item, this, i);}}//這么倒霉,一個都沒有,算了,再給你分配一個新的吧,記住,你的編號~~~咦, 第0個吧~~~return new ItemHolder(new StringBuilder(), null, 0);}else{//你是幸運之星,快速跑~~~~return new ItemHolder(item, this, -1);}}/// <summary>/// Releases StringBuilder back to pool at its right place/// </summary>private void Release(StringBuilder stringBuilder, int poolIndex){//來,兄弟,好借好還,再借不難//什么,這么大,我記得借你時沒這么大啊,讓我再檢查檢查if (stringBuilder.Length > _maxBuilderCapacity){//我靠,你是快車道的,那就給你10倍大小如何,這都超了,那對不起,減半了~~// Avoid high memory usage by not keeping huge StringBuilders alive (Except one StringBuilder)int maxBuilderCapacity = poolIndex == -1 ? _maxBuilderCapacity * 10 : _maxBuilderCapacity;if (stringBuilder.Length > maxBuilderCapacity){stringBuilder = new StringBuilder(maxBuilderCapacity / 2);}}stringBuilder.Length = 0;//好,各就各位...if (poolIndex == -1){_fastPool = stringBuilder;}else{_slowPool[poolIndex] = stringBuilder;}}//下面是個池化對象類/// <summary>/// Keeps track of acquired pool item/// </summary>public struct ItemHolder : IDisposable{public readonly StringBuilder Item;readonly StringBuilderPool _owner;readonly int _poolIndex;public ItemHolder(StringBuilder stringBuilder, StringBuilderPool owner, int poolIndex){Item = stringBuilder;_owner = owner;_poolIndex = poolIndex;}/// <summary>/// Releases pool item back into pool/// </summary>public void Dispose(){if (_owner != null){_owner.Release(Item, _poolIndex);}}}}

總結(jié)

以上是生活随笔為你收集整理的NLog源码解读——StringBuilderPool的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 六月丁香综合网 | 国产午夜精品久久久久久久久久 | 肉肉av福利一精品导航 | 深夜av| 极品探花在线观看 | 日韩精品在线观看一区二区三区 | 成年人在线免费观看 | 99色婷婷 | 少妇毛片一区二区三区粉嫩av | 日本黄色网址大全 | feel性丰满白嫩嫩hd | 日本在线国产 | 综合色伊人 | 天天添天天射 | 亚洲中文字幕97久久精品少妇 | 色综合天天综合网天天看片 | 国产chinese中国hdxxxx | 国产成人免费视频 | 国产成人在线视频免费观看 | 久久久久久久久久久久久久久久久 | 人人模人人爽 | 日韩中文字幕一区 | 91在线视频 | www在线观看视频 | 2019日韩中文字幕 | 国产网址| 少妇又色又紧又黄又刺激免费 | 4438全国成人免费 | 国产欧美一区二区三区在线看 | 懂色tv | 99热一区二区 | 看毛片的网站 | 精品国产大片大片大片 | 男男黄网站| 韩国理论午夜 | 国产精品国产三级国产在线观看 | 中文字幕三级电影 | 999精品免费视频 | 亚洲一区二区视频在线 | 欧美日韩精品一区 | 国产绳艺sm调教室论坛 | 亚洲自拍偷拍一区二区 | 蜜桃av免费看 | 亚洲视频国产精品 | 亚洲精品小视频在线观看 | 久久人人爽爽 | 99精品视频一区二区 | 欧美第一页草草影院 | 日日骑| 美女在线网站 | 免费av一区二区三区 | 日本美女动态图 | 色妞av| 三级视频网 | 黄网在线看 | 久久夜色精品国产噜噜亚洲av | 山村大伦淫第1部分阅读小说 | 日韩在线观看免费av | 七月丁香婷婷 | 欧美成人aaaa | 成人av入口 | 久久精品国产亚洲 | 久久精品国产亚洲av麻豆蜜芽 | 日本在线www| 精品一区二区免费看 | 精品国产区一区二 | 91黑人精品一区二区三区 | 两性午夜免费视频 | 亚洲视频二区 | porn亚洲| 免费久久视频 | 日韩欧美视频在线播放 | 中文字幕免费观看视频 | 黄色片成人 | 日韩午夜激情视频 | 在线观看国产欧美 | 日韩久久精品一区二区 | 国产麻豆电影在线观看 | 伊人手机视频 | 99久久精品免费视频 | 四季av中文字幕一区 | 国产精选久久 | 五月婷婷天堂 | 制服丝袜在线一区 | 一级特黄bbbbb免费观看 | 新天堂网 | 婷婷在线视频 | www.男人天堂 | 日韩污视频在线观看 | 国产做受网站 | 欧美粗又大 | 韩国美女一区二区 | 澳门久久久 | 吊侵犯の奶水授乳羞羞漫画 | 久色婷婷 | 1024手机看片日韩 | 亚洲精品自拍视频 | 亚洲一区有码 | 搡国产老太xxx网站 高h喷汁呻吟3p |