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

网络营销思想的网站改版计划wordpress dux 4.0

网络营销思想的网站改版计划,wordpress dux 4.0,wordpress完整虚拟资源下载,做公众号用什么网站吗文章目录 分配内存释放内存GC标记清除算法分代算法大对象和小对象 .NET的GC机制有这样两个问题#xff1a; 官方文档 自动内存管理 自动内存管理是CLR在托管执行过程中提供的服务之一。 公共语言运行时的垃圾回收器为应用程序管理内存的分配和释放。 对开发人员而言#xf… 文章目录 分配内存释放内存GC标记清除算法分代算法大对象和小对象 .NET的GC机制有这样两个问题 官方文档 自动内存管理 自动内存管理是CLR在托管执行过程中提供的服务之一。 公共语言运行时的垃圾回收器为应用程序管理内存的分配和释放。 对开发人员而言这就意味着在开发托管应用程序时不必编写执行内存管理任务的代码。 自动内存管理可解决常见问题例如忘记释放对象并导致内存泄漏或尝试访问已释放对象的内存。 分配内存 总的来说C#内存是分为四个区块的分别是 全局数据区存放全局变量静态数据常量代码区存放所有程序代码栈区存放为运行而分配的局部变量参数返回数据返回地址等堆区即自由存储区 在进程中代码执行的两大区域是栈和堆。在栈中代码以栈的形式依次入栈出栈执行每个线程会维护一个属于自己的线程栈而栈区的内存地址从上往下增加 摘自一文读懂C#的 堆、栈、值类型、引用类型 深入理解C#中的堆(Heap)与栈(Stack)一次性全都掌握 C#垃圾回收机制详解 相信对于代码在栈中的执行不少计算机专业的都相当清楚。而在堆中却不是这样初始化新进程时运行时会为进程保留一个连续的地址空间区域。 这个保留的地址空间被称为托管堆。 托管堆是专门用于C#的自动内存管理的它由CLR进行管理。 托管堆维护着一个指针用它指向将在堆中分配的下一个对象的地址。最初该指针设置为指向托管堆的基址。与栈不同堆是从下往上的因此所有自由空间都在已用空间的上面。而与栈不同的最大特点就是我们往堆中存取时是自由存取的可以以任意顺序进行存取和移除。 乱七八糟的堆 记得我在之前曾经讲过C#的变量类型存在两种第一种值类型它是直接存储在栈上的且使用值类型赋值则需要完全复制一个副本存在堆栈上。而我们的操作都是在栈上实现的因为栈上的操作速度快内存分配和释放简单。 而引用类型则方便许多一方面引用类型的本体是存储在堆中的在堆中的存取更加自由。另一方面我们会往栈中内存入栈存储了堆地址变量。当我们想要访问引用类型时只需通过栈中的地址就可以找到它。但是却不能直接访问堆因为数据存储太随意如果没有栈中的指针我们根本不知道它在堆中的什么位置。 但是使用堆引发一个问题在栈中由于程序执行完毕各种入栈的变量会自动释放。但是堆首先存取随意如果程序员忘了释放用完的变量就会浪费内存。其次堆中的变量就算释放了那么被释放的变量对应内存就空在那里了。如果空着的连续内存太小我们根本用不了就会产生内存碎片。因此C#使用托管堆由GC机制帮助我们自动管理这个堆。 应用程序创建第一个引用类型时将为托管堆的基址中的类型分配内存。 应用程序创建下一个对象时垃圾回收器在紧接第一个对象后面的地址空间内为它分配内存。 只要地址空间可用垃圾回收器就会继续以这种方式为新对象分配空间。 从托管堆中分配内存要比非托管内存分配速度快。 由于运行时通过为指针添加值来为对象分配内存所以这几乎和从堆栈中分配内存一样快。 另外由于连续分配的新对象在托管堆中是连续存储所以应用程序可以快速访问这些对象。 总结栈主要用于存储局部变量和方法调用信息它的操作速度较快而堆主要用于存储动态分配的对象它的操作速度较慢但能够支持更长的生命周期和对象共享。对于数据较小、生命周期短暂的变量可以考虑使用栈对于较大的对象或需要长时间存活的对象需要使用堆。 释放内存 让我们了解一下GC机制是怎么释放内存的。 .NET 的垃圾回收器管理应用程序的内存分配和释放。 每当有对象新建时公共语言运行时都会从托管堆为对象分配内存。 只要托管堆中有地址空间运行时就会继续为新对象分配空间。 不过内存并不是无限的。 垃圾回收器最终必须执行垃圾回收来释放一些内存。 垃圾回收器的优化引擎会根据所执行的分配来确定执行回收的最佳时机。 执行回收时垃圾回收器会在托管堆中检查应用程序不再使用的对象然后执行必要的操作来回收其内存。 当满足以下条件之一时将发生垃圾回收 系统具有低的物理内存。 内存大小是通过操作系统的内存不足通知或主机指示的内存不足检测出来的。 由托管堆上已分配的对象使用的内存超出了可接受的阈值。 随着进程的运行此阈值会不断地进行调整。 调用 GC.Collect 方法。 几乎在所有情况下你都不必调用此方法因为垃圾回收器会持续运行。 此方法主要用于特殊情况和测试。 GC 总体来看C#的GC和Lua的GC其实差不多 引用跟踪GC的第一步是通过引用跟踪确定哪些对象仍然被活动的引用所引用。GC会从栈上的根对象开始根对象包括方法中的局部变量和静态变量。然后从根对象开始跟踪引用链找出所有的可达对象。 根对象标记在引用跟踪的过程中GC会将所有可达的对象标记为活动对象。这些活动对象将被保留下来不会被清理。 标记清除算法 对象标记GC接下来会遍历堆中的所有对象从根对象可达的对象开始将它们标记为活动对象。GC使用一种叫做“标记-清除mark and sweep”的算法来标记对象。首先所有的堆中的对象全部默认为垃圾接着通过遍历栈找到引用的对象给这些被引用的对象打上标记。最后将所有的垃圾内存释放或者标记为空闲状态。 压缩阶段当清理完垃圾之后堆中的内存会变得零零散散的为了避免内存碎片接着就会把所有存活的对象移动到堆的底部。 分代算法 分代算法的原理基于统计学简单来说活动时间越长的对象使用率越高则死亡率越低越不需要进行清理。 分代算法的假设前提条件 1、大量新创建的对象生命周期都比较短而较老的对象生命周期会更长 2、对部分内存进行回收比基于全部内存的回收操作要快 3、新创建的对象之间关联程度通常较强。heap分配的对象是连续的关联度较强有利于提高CPU cache的命中率 .NET将heap分成3个代龄区域: Gen 0、Gen 1、Gen 2 每次迭代时使用标记清除算法去除垃圾。而堆将被分为3个代龄区域相应的GC有3种方式: # Gen 0 collections, # Gen 1 collections, #Gen 2 collections。 当Gen0区域内存达到阈值将触发# Gen 0 collections后存活的对象将进入Gen1区域 当Gen1区域内存达到阈值将触发 # Gen 1 collections将Gen0存活对象放入Gen1Gen1存活对象放入Gen2。 当Gen2区域内存达到阈值将触发 # Gen 2 collections将Gen0存活对象放入Gen1Gen1存活对象放入Gen2Gen2存活对象位置不变。 Gen 0和Gen 1比较小这两个代龄加起来总是保持在16M左右Gen2的大小由应用程序确定可能达到几G因此0代和1代GC的成本非常低2代GC称为fullGC通常成本很高。粗略的计算0代和1代GC应当能在几毫秒到几十毫秒之间完成Gen 2 heap比较大时fullGC可能需要花费几秒时间。大致上来讲.NET应用运行期间2代、1代和0代GC的频率应当大致为1:10:100。 和Lua一样当对象被GC清理的时候会调用一个终结器函数。 大对象和小对象 GC将对象分为小型和大型对象。 如果是大型对象它的某些特性将比对象较小时显得更为重要。 例如压缩大型对象也就是在内存中将其复制到堆上的其他地方的费用相当高。 因此垃圾回收器将大型对象放置在大型对象堆 (LOH) 上。 如果对象的大小大于或等于 85,000 字节将被视为大型对象。 此数字根据性能优化确定。 对象分配请求为 85,000 字节或更大时运行时会将其分配到大型对象堆。大型对象属于第 2 代因为只有在第 2 代回收期间才能回收它们。 加载 CLR 时GC 分配两个初始堆段一个用于小型对象小型对象堆或 SOH一个用于大型对象大型对象堆LOH。对于 SOHGC 未处理的对象将提升为下一代。而LOH即使未被处理它也属于第2代而不会提升为下一代。而且在大对象堆中不会进行压缩如果回收后产生的内存碎片的大小小于85000byte那么这个碎片就在这个程序的生命周期中永远不能被再次利用了。 .NET的GC机制有这样两个问题 首先GC并不是能释放所有的资源。它不能自动释放非托管资源。 第二GC并不是实时性的这将会造成系统性能上的瓶颈和不确定性。 GC并不是实时性的这会造成系统性能上的瓶颈和不确定性。所以有了IDisposable接口IDisposable接口定义了Dispose方法这个方法用来供程序员显式调用以释放非托管资源。使用using 语句可以简化资源管理。
http://www.dnsts.com.cn/news/31825.html

相关文章:

  • 网站后台上图片后网页显示不正确易加网站建设方案
  • 什么网站可以赚钱啊安徽理工大学新校区建设网站
  • 做网站网站推广赚佣金linux wordpress 主题
  • google属于搜索引擎类网站.软件设计师培训机构
  • 做仿站如何修改网站管理权限自己做网站需要哪些流程
  • 东莞网站开发公司wordpress调用jssdk接口
  • 怎么制作一个国外网站重庆节点建筑设计咨询有限公司
  • 怎么在网上做网站哪些公司做网站好
  • 网站建设视觉效果千博网站建设
  • 网站实现网站建设设计方案
  • 太原做企业网站的网页制作及网站建设
  • 手机购物网站建设网站开发相关外文书籍
  • 杭州模板网站好网页设计与制作课程设计报告shu
  • 新建文档怎么做网站帝国网站调用图片集
  • 网站程序安装wordpress搜索
  • 如何在各种网站投放广告大学生网站的设计风格
  • 做网站怎么删除图片做搜狗pc网站快速排
  • 网站建设 从入门到精通pdfwordpress 动图
  • 如何在电影网站中做淘客甘肃网站建设公司电话
  • 网站集群建设解决方案企业网站的建设目的有什么
  • 网站制作青岛公司为什么要做外贸网站
  • 秦皇岛建设网站公司哪家好网站建设与规划实训总结
  • 眼科医院网站优化服务商海口建网站
  • 通辽做网站制作wordpress文章详情展示不了
  • 中国科协网站建设招标电子商务网站开发教程论文6
  • 盘石网站做的怎么样百度网站改版工具
  • ui设计软件哪个好小小课堂seo自学网
  • 全球旅游网站排名秦皇岛市住房公积金管理中心
  • 佛山专业的免费建站wordpress调用最新文章列表
  • 信息类网站天猫购买平台