首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在OutOfMemoryException中强制使用.Net

如何在OutOfMemoryException中强制使用.Net
EN

Stack Overflow用户
提问于 2016-08-19 18:50:03
回答 2查看 402关注 0票数 5

有时候,让一个应用程序陷入糟糕的境地,看看它是如何响应的,是很有帮助的。像拔掉网络电缆或移除电源这样的事情会告诉我,我的应用程序有多有弹性,我在哪里有工作要做。

为此,我试图找出在.Net中强制使用.Net的最快方法。在简单的控制台应用程序中执行此操作将允许我将此场景注入正在运行的应用程序中。显然,在处理OutOfMemoryExceptions时还需要考虑其他事情(例如内存碎片和垃圾收集器如何分配不同的代),但这对本实验的范围并不重要。

更新

为了澄清问题的目的,重要的是要注意的是,简单地抛出内存异常是没有帮助的,因为我想看看当内存压力增加时,程序将如何反应。本质上,我希望将GC刺激到一个积极的收集模式,并监视它对性能的影响,直到进程因内存不足异常而死亡。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-08-19 18:53:07

举个例子来自MSDN

下面的示例说明了当示例尝试插入将导致对象的长度属性超过其最大容量的字符串时,调用StringBuilder.Insert(Int32, string, Int32 32)方法引发的Int32异常

代码语言:javascript
复制
using System;
using System.Text;

public class Example
{
   public static void Main()
   {
      StringBuilder sb = new StringBuilder(15, 15);
      sb.Append("Substring #1 ");
      try {
         sb.Insert(0, "Substring #2 ", 1);
      }
      catch (OutOfMemoryException e) {
         Console.WriteLine("Out of Memory: {0}", e.Message);
      }
   }
}
// The example displays the following output:
//    Out of Memory: Insufficient memory to continue the execution of the program.

此外,它还说明了如何纠正错误。

将对StringBuilder.StringBuilder(Int32, any 32)构造函数的调用替换为调用任何其他StringBuilder构造函数重载。StringBuilder对象的最大容量将设置为其默认值,即Int32.MaxValue。 调用StringBuilder.StringBuilder(Int32, any 32)构造函数,该构造函数的maxCapacity值足够大,足以容纳对StringBuilder对象的任何扩展。

票数 4
EN

Stack Overflow用户

发布于 2016-08-19 18:52:46

根据MSDN

OutOfMemoryException异常有两个主要原因:

  • 您正在尝试展开StringBuilder对象,使其超出其StringBuilder.MaxCapacity属性定义的长度。
  • 公共语言运行库无法分配足够的连续内存来成功执行操作。任何需要内存分配的属性赋值或方法调用都可以引发此异常。有关OutOfMemoryException异常原因的更多信息,请参见“内存不足”不引用物理内存。 这种类型的OutOfMemoryException异常表示灾难性的失败。如果您选择处理异常,您应该包括一个catch块,它调用Environment.FailFast方法来终止应用程序,并向系统事件日志添加一个条目,如下例所示。

在我看来,第一次使用字符串生成器会更容易一些。

这样做是可行的:

代码语言:javascript
复制
var sb = new StringBuilder(5, 5);
sb.Insert(0, "hello", 2);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39045936

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档