当前位置: 首页 > news >正文

郑州建网站联通公司网站谁做的

郑州建网站,联通公司网站谁做的,做网站运营要了解哪些,大型大型网站建设方案ppt垃圾回收是你开发工作中要了解的最重要的事情。它是造成性能问题里最显著的原因#xff0c;但只要你保持持续的关注#xff08;代码审查#xff0c;监控数据#xff09;就可以很快修复这些问题。我这里说的“显著的原因”#xff0c;实际上是我们对垃圾回收的理解和期望不…垃圾回收是你开发工作中要了解的最重要的事情。它是造成性能问题里最显著的原因但只要你保持持续的关注代码审查监控数据就可以很快修复这些问题。我这里说的“显著的原因”实际上是我们对垃圾回收的理解和期望不正确导致的。在.NET开发中内存的性能问题和CPU的性能问题一样多这就是单独开一章主要描述这个问题的原因。 当我们提及垃圾回收造成的开销时就会不如自主的紧张起来但一旦你理解它就能很好的优化你的程序。在后面文章里你可以看到GC可以在大多数情况下在堆处理上提供很好的性能同时也能很好解决内存分配与内存碎片问题。 Windows在非托管堆里用使用一个空闲列表来维护内存分配。尽管它会想尽办法来减少内存碎片但很多长时间运行的非托管代码本地代码的程序还是会碰上内存碎片问题。它会花很多时间在空闲列表里找到合适可分配地址。随着内存使用持续增长不可避免的需要不断重启来解问题。一些程序还会采用自定义内存分配的方案自己的内存分配算法来接管malloc函数来解决内存碎片问题。 .NET里的内存分配通常在一个内存段里进行这样申请和回收的消耗会小很多。托管堆通过将最近申请的内存对象放在一起可以减少对空闲列表的遍历提升性能。 在默认的分配过程中通过代码获得对象的大小然后在剩余的缓冲区里分配它。因为没有竞争只要有合适的空间就能很快的分配。一旦这要申请的空间这一段无法满足GC分配器会创建一个新的内存段在这上面开始分配之后的新的分配也都会在这新创建的内存段里进行。 这个过程中系统代码分配器只会做一些简单的检查。 我们来看一个简单的栗子 private class MyObject{     private int x;    private int y;     private int z; }  private static void Main(string[] args){     var x new MyObject(); } 首先我们在分配器前设置一个断点 ; Copy method table pointer for the class into; ecx as argument to new() ; You can use !dumpmt to examine this value. mov ecx,3F3838h; Call newcall 003e2100; Copy return value (address of object) into a register mov edi,eax 目前分配的是 ; NOTE: Most code addresses removed for formatting reasons. ; ; Set eax to value 0x14, the size of the object to; allocate, which comes from the method table mov eax,dword ptr [ecx4] ds:002b:003f383c00000014; Put allocation buffer information into edx mov edx,dword ptr fs:[0E30h]; edx40 contains the address of the next available byte; for allocation. Add that value to the desired size. add eax,dword ptr [edx40h]; Compare the intended allocation against the ; end of the allocation buffer. cmp eax,dword ptr [edx44h]; If we spill over the allocation buffer, ; jump to the slow path ja 003e211b; update the pointer to the next free ; byte (0x14 bytes past old value) mov dword ptr [edx40h],eax; Subtract the object size from the pointer to; get to the start of the new objsub eax,dword ptr [ecx4]; Put the method table pointer into the ; first 4 bytes of the object. ; eax now points to new objectmov dword ptr [eax],ecx; Return to caller ret; Slow Path – call into CLR method003e211b jmp clr!JIT_New (71763534) 总之这些涉及到方法调用的指令只有9个不是很难懂。如果你使用了一些配置选项例如工作站模式它不会因为竞争而导致分配变慢因为GC给每一个处理器cpu内核分配了一个堆段。.NET在这些内存分配地方做了一些复杂处理但你不必深入了解它是如何工作只需要知道如何优化它就可以了。 我在本书开头就涉及到垃圾回收是因为今后章节里很多东西都会涉及到它。正确的理解垃圾回收是帮助你实现好性能的基础。 相关文章 [翻译]编写高性能 .NET 代码 第一章性能测试与工具 -- 选择什么来衡量[翻译]编写高性能 .NET 代码 第一章性能测试与工具 -- 平均值 vs 百分比[翻译]编写高性能 .NET 代码 第一章工具介绍 -- Visual Studio编写高性能 .NET 代码 第一章工具介绍 -- Performance Counters性能计数器 原文地址http://www.cnblogs.com/yahle/p/6550044.html.NET社区新闻深度好文微信中搜索dotNET跨平台或扫描二维码关注
http://www.pierceye.com/news/8985/

相关文章:

  • 手机制作网站软件下载广州顺德网站设计
  • 做网站在哪里找素材城乡建设部网站自助商品房
  • 做ppt哪个网站好wordpress兼容ie
  • 建立本地网站软件开发工具平台
  • 苏州高端模板建站六盘水建设网站
  • 成都网站建设网站建设wordpress去除更新提示
  • 公司网站建设哪里好软件定制开发服务收费多少
  • 青岛做网站建设多少钱网站上的公告怎么做参考文献
  • 爱站关键词挖掘工具wordpress tag超链接
  • 在哪里做网站设计深圳网站的建设
  • 门户网站开发要多久2021年国内最新新闻
  • centos6.6做网站网络营销中网站的目的是
  • 网站各类备案游标卡尺 东莞网站建设
  • 外贸英文商城网站建设品牌销售策划方案
  • 建设一个网站多钱WordPress自动文章
  • 做影片的网站描述上海猎头公司名单
  • 网站主机选择与优化免费ai智能写作一键生成
  • 网站开发后所有权建筑模板尺寸是多少
  • 做公众号关注网站小程序定制开发外包风险
  • 网站建设合同包含什么crm软件是干嘛的
  • 张店网站建设定制高新快速建设网站电话
  • 电子商务网站建设分析论文WordPress不发邮件了
  • 科技设计公司网站模板广东网络营销全网推广策划
  • 景区门户网站建设大数据分析网站开发 就业简历模板
  • 模板王网站官网wordpress 更新缓存
  • app开发好还是网站开发好金融行业网站建设方案
  • 怎么让自己的网站被百度收录已经有域名 如何建设网站
  • 3d模型资源哪个网站比较好网站开发属于知识产权吗
  • 关于com的网站制作企业网站
  • 山西省建设厅入晋备案网站学校建网站