专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

记一次MemoryLeak分析

  起因:最近公司的一个web产品遇到了内存溢出,于是开始着手调查。
  调查:首先当务之急是找到那个或那些API导致MemoryLeak,这个应该不难,根据监控分析,在内存上升时间段内有哪些API被访问,再就是根据开发人员提供信息,评估可能内存溢出的API。
  案例分析:划定API范围后,用压力测试来重现问题,进一步定位具体是哪个方法,哪个技术点出问题,这些应该也不难,难的是知道什么地方有问题,但不知道怎么解决。
  下面是经过精简后,分离出的有问题的代码。
  项目文件csproj:ProjectSdkMicrosoft。NET。SdkPropertyGroupOutputTypeExeOutputTypeTargetFrameworknet6。0TargetFrameworkImplicitUsingsenableImplicitUsingsNullableenableNullableServerGarbageCollectionfalseServerGarbageCollectionConcurrentGarbageCollectiontrueConcurrentGarbageCollectionPropertyGroupItemGroupPackageReferenceIncludeClosedXMLVersion0。96。0PackageReferenceIncludeQRCoderVersion1。4。2ItemGroupProject
  具体代码program。cs:usingClosedXML。Excel;usingDocumentFormat。OpenXml。Spreadsheet;usingQRCoder;usingSystem。Diagnostics;usingSystem。Drawing;usingSystem。Drawing。Imaging;usingSystem。Reflection。Emit;usingSystem。Runtime。InteropServices;usingColorSystem。Drawing。Color;Console。WriteLine(回车开始);Console。ReadLine();varqrGeneratornewQRCodeGenerator();while(true){usingvarworkBooknewXLWorkbook();varwsworkBook。Worksheets。Add(TestSheet);for(vari1;i200;i){usingvarqrCodeDataqrGenerator。CreateQrCode(34;{i}{DateTime。Now。ToString(yyMMddHHmmssfffffff)}01PAe8np5m7pVULUiuxwwZTWQ9KZ8JUgQyWiyUrsiHqi4FKrCzhRAcddCkkJKDgVEkpmqD7kYJz5GTpe4oHvJdJDnNMMCTwbV19G,QRCodeGenerator。ECCLevel。L);usingvarqrCodenewQRCode(qrCodeData);usingvarqrCodeImageqrCode。GetGraphic(20,Color。Black,Color。White,false);usingvarimgStreamnewMemoryStream();qrCodeImage。Save(imgStream,ImageFormat。Png);usingvarimagews。AddPicture(imgStream)。MoveTo(ws。Cell(i,1),newPoint(50,10));image。Width60;image。Height60;}workBook。SaveAs(34;appimages{i}{DateTime。Now。ToString(yyyyMMddHHmmss)}。xlsx);Console。WriteLine(34;完了:{DateTime。Now});Console。ReadLine();}
  很有趣的是,这块代码在docker里运行时会有memoryleak,但在windows上是没有问题的。
  上面代码主要有两个功能,生成二维码,然后保存在Excel里,最后保存本地。具体表现是,每生成一个Excel,内存就会增加,不释放,直到容器重启。
  其实找性能问题是一个排查的过程,首先要一点一点把认为有问题的代码修正,再次进行测试,看是否有改善,比如主动去释放一些对象,使用using,或者直接用GC。Collect()来测试。经过一轮后发现没有改善内存只涨不降的现象。于是就进行功能分享,把QR生成换成静态图片,查看Excel生成部分是否有问题,这样很快就定位到了QR生成有问题,但QR生成能有什么问题呢?并且这个功能一直在用,从。net5用到。net6,都没有变更过这里的代码。那只能查看是QR生成有无问题了。
  下面是经过一番查找后的结果,果然ORCode类对。net6。0不能很好的支持,只能换掉它了,替代的方式是用PngByteQRCode。
  https:github。comcodebudeQRCoderwikiAdvancedusageQRCoderenderers2overviewofthedifferentrenderers
  修改后的代码是:usingClosedXML。Excel;usingDocumentFormat。OpenXml。Spreadsheet;usingQRCoder;usingSystem。Diagnostics;usingSystem。Drawing;usingSystem。Drawing。Imaging;usingSystem。Reflection。Emit;usingSystem。Runtime。InteropServices;usingColorSystem。Drawing。Color;Console。WriteLine(回车开始);Console。ReadLine();varqrGeneratornewQRCodeGenerator();while(true){usingvarworkBooknewXLWorkbook();varwsworkBook。Worksheets。Add(TestSheet);for(vari1;i200;i){byte〔〕qrCodeAsBitmapByteArrPngByteQRCodeHelper。GetQRCode(DateTime。Now。ToString(yyMMddHHmmssfffffff)01PAe8np5m7pVULUiuxwwZTWQ9KZ8JUgQyWiyUrsiHqi4FKrCzhRAcddCkkJKDgVEkpmqD7kYJz5GTpe4oHvJdJDnNMMCTwbV19G,QRCodeGenerator。ECCLevel。Q,20,false);varimgStreamnewMemoryStream(qrCodeAsBitmapByteArr);imgStream。Seek(0,SeekOrigin。Begin);usingvarimagews。AddPicture(imgStream)。MoveTo(ws。Cell(i,1),newPoint(50,10));image。Width60;image。Height60;}workBook。SaveAs(34;C:UsersaxzxsPictures{DateTime。Now。ToString(yyyyMMddHHmmss)}。xlsx);Console。WriteLine(34;完了:{DateTime。Now});Console。ReadLine();}
  其实单看上面过程,很简单,其实测试过程中的一些指标表象,以及个人对技术点的认知,都会让性能分析起来要走一些弯路。比如上面功能,其实我们花了很多时间在Excel的生成找问题,甚至换了Excel生成组件来进行测试,经过多轮出修改方案,修改代码,压力测试,结果分析,才最终定义QR码,又经过多轮对QR码生成的方案优化,最后才找到是因为QR不支持导致的结果。
  性能分析就是找疑难杂症,是个痛苦过程,同时,解决掉,又是一个很喜悦的收获。

班里学生几乎不听课,家长也没什么太大要求,只是让孩子在学校就行,教师应该怎么教?这样的班级一不只一个两个,万马齐喑究可哀,谁也不能力挽狂澜!很多家长,面对面时,心平气和地对我说过,自己的孩子不是读书的料,没有成绩不怪老师!看似平常的一句话,令我痛彻心扉!曾经,西南大学(荣昌校区)这个学校好吗?该校区原为民国中央畜牧研究所,后经历了四川省荣昌畜牧兽医学校,四川畜牧兽医学院。2001年并入西南农业大学,2005年并入西南大学。该校区不是西南大学分校,是校区,与本部共为一个法红薯甜而且淀粉高,糖尿病人能吃吗?怎样吃才不会血糖升高?谢邀回答。吃红薯是不可能不让血糖升高的,正如题主所说红薯甜淀粉高,淀粉最终转化的就是葡萄糖,进入血液直接影响血糖。那么糖尿病患者能不能吃红薯?其实吃是可以吃的,毕竟红薯中的糖分不是甲状腺滤泡癌晚期还有必要治疗吗?大家好!甲状腺癌大体分为四种病理类型1。乳头状癌2。滤泡性癌3。髓样癌4。未分化癌。在临床上我经常会遇到题主提的这样的问题。今天就和大家聊一聊这个话题。可能大家对甲状腺乳头状癌有所新能源基金还会涨吗?新能源的基金我买了7支,不论是锂电,新能源汽车,还是电源设备,特斯拉概念等等,我的基金都涵盖了。在七月的时候,新能源涨的非常好,有的时候能达到五六个点,但是时间进入八月下旬,九月上本人健身一年多了,总感觉没啥效果,是饮食方面还是运动方面出了问题,求大神指导?首先你玩确定先你想要的是什么身材我179得身高没有开始健身之前是105斤健身4年左右体重最高到165左右增肌也好减脂也好就是热量问题涨不上去就是吃的不够多练的不够狠减不下来就是吃的女性bmi多少是正常的,注意什么?BMI是身体质量指数的缩写,是目前国际上常用的衡量人体肥胖程度和是否健康的重要标准,其计算公式为体重身高的平方(国际单位kg)。正常情况下,BMI的正常范围为18。524。0,当2人工智能行业的发展前景怎么样?近年来,人工智能产业吸引融资数量持续增长。2020年中国人工智能产业融资规模约1400亿元,资本持续看好中国人工智能产业发展。随着国家政策的倾斜和5G等相关基础技术的发展,中国人工毛利润纯利润净利润之间有什么区别?纯利润和净利润是一个说法,上市公司都是习惯说净利润。1毛利润营业收入营业成本,营业收入不用解释了,是销售商品服务获得的收入。营业成本主要包括原材料和直接生产的人工成本,所以,毛利润怀孕37周可以去医院生产吗?为什么?怀孕37周可以去医院生产吗?为什么?既然不想剖腹产的话,那就代表题主想要顺产,孕37周胎儿已经足月,如果是瓜熟蒂落,自然分娩那就可以,但是如果想要打催产针催生的话,出否特殊情况,否探索共享电单车碳普惠碳交易模式松果出行战略携手北京绿色交易所云南网讯(记者龙彦)3月29日,北京绿色交易所与松果出行在京签署战略合作协议,双方将在低碳出行碳普惠减排模型开发及CCER(国家核证自愿减排量)交易等多个领域展开合作,助力碳达峰碳
哈弗h6新能源上市,纯电续航高达110公里,售15。98万起本地车圈百事通,解析车市新鲜事第140期,本期文章共951字阅读2分钟北京时间2022年9月28日晚,哈弗H6新能源正式上市,共推出三款配置,指导价在15。98万至17。38万区间几百元捡漏一只汤丽柏琦风琴包汤丽柏琦风琴包原来这么好看的现在才发现哈哈哈包包原本是帆布肩带的被我替换成皮的了虽然价格便宜但百分百是正品的还出具了中检的鉴定证书呢收到后果然是我喜欢的包包呀包包是海蓝色为主调老花油价调整消息今天10月1日,全国各地加油站9295汽油价格今天是国庆假日的第一天,最新的数据显示油价预计调整幅度达到了0。08元升,但是结合现在原油市场的情况,油价预计调整幅度一直出现缩窄,虽然现在本次调价周期已经到了后期,但是因为节假日2款低速电动车新品,外观新潮,最大续航180公里,9000块起阅读本文前,请您先点击上面的关注二字,可以快速订阅我们的最新内容,感谢支持还有几个月就过年了,很多用户正在考虑入手一辆低速四轮电动车,主要给家里老人出行代步使用,也有部分是为了接娃官方火箭雷霆多人交易正式达成,火箭得到次轮为2026年火箭官方今日正式宣布,球队与雷霆的多人交易正式达成。据悉,这笔交易的具体内容为,火箭送出斯特林布朗特雷伯克马基斯克里斯和大卫努瓦巴,从雷霆得到了德里克费沃斯莫哈克利斯泰杰罗姆泰奥马为什么我说,这次小米Civi2有点争议之前文章提过,小米Civi几乎就是小米家的颜值天花板。不管是设计和用料,还是轻薄的表现,我都相当满意。这个刚满1岁的系列的手机迎来了更新。但是嘛,这次Civi2有点争议。具体啥情况任泽平9天6次炮轰苹果,不要再沦为高端韭菜,支持国产近日,一学者任泽平9天6次对苹果发起了冲击,表示所谓的高端PRO版不过是割高端韭菜的专机,阉割了很多的功能,还把配件价格定的虚高,国内竟然还有那么多人无脑地崇拜,一出新机就掏空积蓄并发编程CompletableFuture异步编程详解前言在Java开发的web项目中,我们经常会遇到接口响应耗时过长,或者定时任务处理过慢,那在Java中最常见的解决方法就是并行了,想必大家也都不陌生了。今天的分享主要带大家从一个实消息今天下午5点开抢!德安政府消费券又又又来啦!约惠金秋乐购德安2022德安县消费券又又又来啦!为进一步激发德安县消费市场活力,丰富市民消费选择,提升市民消费热情,德安县开展2022年国庆促消费商贸活动,发放通用券文旅券华夏阳光爆款小米显示器只要599元IPS面板买显示器怎么选,如果你不是富豪,当然是选择经济实惠具有高性价比的产品了。尤其是主流尺寸主流规格的显示器,普遍价格非常亲民。今天给大家推荐的是小米Redmi1A显示器,这款显示器拥有2022年最值得购买的5款手机,内行人强烈推荐,跟着选不吃亏您在阅读前请点击上面的关注二字,后续会第一时间为您提供更多有价值的相关内容,感谢您的支持。每年手机厂商都会发布一些非常经典的机型,这些机型不一定是高端旗舰机,也可能是一些千元机,这
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网