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

做网站一定需要自己买主机吗南京前十名传媒广告公司

做网站一定需要自己买主机吗,南京前十名传媒广告公司,东莞轻推网络公司,安安网站建设通过代码实现 OutOfMemoryIntro来尝试写一个发生 OutOfMemoryException 的代码吧#xff0c;开启煞笔代码第三篇 —— OutofMemoryOutOfMemoryOutOfMemory 顾名思义就是内存不足#xff0c;在 .NET 中当内存不足的时候就会抛出 OutOfMemoryException 的异常。想要触发 OutOfM… 通过代码实现 OutOfMemoryIntro来尝试写一个发生 OutOfMemoryException 的代码吧开启煞笔代码第三篇 —— OutofMemoryOutOfMemoryOutOfMemory 顾名思义就是内存不足在 .NET 中当内存不足的时候就会抛出 OutOfMemoryException 的异常。想要触发 OutOfMemoryException 就要满足内存不足的条件在 .NET Framework 中可能就只能一直分配内存直到内存不足再没有足够的内存可以分配了在 .NET Core 3.x 版本以后微软引入了一些 GC 的配置我们可以通过这些配置来指定最大的 GC 内存这样我们就可以实现触发 OutOfMemoryException 而不影响其他应用程序正常运行的目标了。在 .NET 5 中我们又可以更进一步更精细的控制 GC 使用的内存了在 .NET 5 中我们可以针对每个堆SOH/LOH/POH来设置内存限制。GC 堆内存限制配置我们测试的示例使用限制 GC 堆大小 (Heap Limit) 的方式来限制应用程序的内存占用以免影响到别的应用程序正常运行该配置只针对 64 位电脑有效现在的电脑应该大多都是64位吧。配置的方式有两种一种是通过环境变量来配置一种是通过 runtime.config.json 来配置通过环境变量配置 COMPlus_GCHeapHardLimit 为要配置的内存大小需要注意的是通过环境变量配置的时候指定的值需要是十六进制的值通过 runtimeconfig.json 配置的时候是直接用十进制的数值因为我们只是想简单的测试一下不能影响别的应用程序而且不能在代码里配置当前进程的环境变量因为进程启动的时候 GC 的配置就已经加载好了在代码里配置当前进程的环境变量来改变 GC 配置是不会生效的所以我们选择配置 runtimeconfig.json 来测试在项目的 bin 目录下可以找到 runtimeconfig.json 文件我们修改这一个文件即可使用 runtimeconfig.json 的时候需要注意先生成一下然后再更新 runtimeconfig.json 文件测试配置如下配置的 GC 堆的最大值是 1M配置的不能太小太小的话 CoreCLR 可能都会启动失败从而导致程序无法正常运行{runtimeOptions: {tfm: netcoreapp3.1,framework: {name: Microsoft.NETCore.App,version: 3.1.0},configProperties: {System.GC.HeapHardLimit: 1048576}} } 测试代码测试代码如下Console.ReadLine(); var bytes  GC.GetTotalAllocatedBytes(); Console.WriteLine($AllocatedBytes: { bytes } bytes); var list  new Listbyte[](); try {while (true){list.Add(new byte[85000]);} } catch (OutOfMemoryException) {Console.WriteLine(nameof(OutOfMemoryException));Console.WriteLine(list.Count);bytes  GC.GetTotalAllocatedBytes();Console.WriteLine($AllocatedBytes: { bytes } bytes); } Console.ReadLine(); 测试输出如下上面的测试代码使用的 byte 数组的长度是 85000 的原因是当要分配的对象大于等于 85k85000时会直接分配到大对象堆中正好可以测试一下。我们使用微软的 dotnet dump 诊断工具来测试一下第一次 dump 是在 list 对象创建之前进行的第二次 dump 是发生 OutOfMemory 之后的从上面的 dump 结果可以看的出来byte 数组的对象确实是分配在大对象堆LOH上的几乎所有的内存分配都在大对象堆中有一些小对象从0 代升到了 1代。More上面的测试代码使用的 byte 数组的长度是 85000 你测试的时候也可以使用更大的值或者直接使用 int.MaxValue在前面的 StackOverflow 文章中有网友评论说他们之前遇到的一个 StackOverflow 示例常常伴随着 OutOfMemory 递归和这种方式有点类似都是要一直创建新的对象分配新的内存。除此之外还有哪些更简单的方式吗欢迎补充Referenceshttps://docs.microsoft.com/en-us/dotnet/core/run-time-config/garbage-collector#heap-limithttps://github.com/WeihanLi/SamplesInPractice/blob/master/StupidSamples/FullMemorySample.cs
http://www.zqtcl.cn/news/854482/

相关文章:

  • 福田网站制作哪家好昆山企业网站建设公司
  • wordpress快六安网站自然排名优化价格
  • 网站的线下推广怎么做的系统官网网站模板下载安装
  • 北京网站优化推广公司企业网站建设费怎么核算
  • 网站建设vps个人如何做网站推广
  • 小语种网站怎么设计网页制作公司 大连
  • 贵港市城乡住房建设厅网站菜鸟教程网站
  • 广州网站建设找哪家免费搭建网站的软件
  • 培训班管理系统 免费太原优化网站排名
  • 上海怎么做网站网站让图片充满屏幕怎么做
  • 哈尔滨营销网站建设wordpress 加载图片不显示
  • 电商网站功能结构图网站做中秋专题怎么弄
  • 深圳专业建站平台陕西省建设工程质量安全监督总站网站
  • 制作网页的网站的软件是用户反馈数据分析软件园
  • 南京 做网站seo查询网站
  • 卖高仿名牌手表网站共享wifi小程序搭建
  • c#网站开发模板想在意大利做购物网站
  • 2015做那些网站能致富60天做网站
  • 沈阳个人建站模板网站图片计时器怎么做
  • 福州定制网站开发北京排名seo
  • 地方门户网站开发方案长沙有哪个学校可以学网站建设
  • 建个购物网站水果建设网站前的市场分析
  • 建网站的目的小程序登录代码
  • 南京有名的网站建设公司自学室内装修设计教程
  • 新乡市做网站的公司开发公司简介企业介绍
  • 礼品网站模板淘宝店铺购买交易平台
  • 属于公司的网站怎么做外贸服装网站开发
  • 做暧网站泸州公司做网站
  • 做文库类网站网站所有权 备案
  • 网站开发主要内容站长之家网站查询