限制C#程序使用的最大内存

2024-03-31

我需要限制 C# 程序使用的最大内存,即进行安排,以便如果其内存消耗超过一定限制,它将立即崩溃,而不是继续向操作系统请求更多内存。

(代码已经正确且高效,但内存消耗在运行时根据输入数据的不同而变化不可预测。某些输入数据集仅使用几兆字节后就可以正确得出结论。另一些输入数据集会导致它使用许多兆字节。在实践中,这意味着当虚拟内存系统疯狂地尝试满足请求时,它将使整个机器停止运行,然后崩溃。我希望程序立即崩溃,而不需要经历“使整个机器停止运行”部分。 )

它在 64 位 Windows 上运行;在大多数情况下,该限制实际上应为数十 GB,但以下测试用例尝试分配 1 GB;我试图让它崩溃而不是满足这个请求。

C:\t>type a.cs
using System;

class a
{
    static void Main(string[] args)
    {
                var a = new byte[1024*1024*1024];
                a[0] = 5;
                Console.WriteLine(a[0]);
    }
}

C:\t>csc a.cs
Microsoft (R) Visual C# Compiler version 3.5.0-beta4-20153-05 (20b9af91)
Copyright (C) Microsoft Corporation. All rights reserved.

https://learn.microsoft.com/en-us/dotnet/core/run-time-config/garbage-collector https://learn.microsoft.com/en-us/dotnet/core/run-time-config/garbage-collector表明实际上有一种方法可以将其设置为运行时参数,方法是在名为的文件中指定它runtimeconfig.json。文档的某些部分建议文件名需要以程序名作为前缀,而有些则不需要;我正在尝试两种方法。

C:\t>type runtimeconfig.json
{
   "runtimeOptions": {
      "configProperties": {
         "System.GC.HeapHardLimit": 209715200
      }
   }
}

C:\t>type a.runtimeconfig.json
{
   "runtimeOptions": {
      "configProperties": {
         "System.GC.HeapHardLimit": 209715200
      }
   }
}

该文档还建议这可以通过设置环境变量来完成。

C:\t>set DOTNET_GCHeapHardLimit=C800000

但以上都没有任何效果。

C:\t>a
5

我是否缺少有关如何使用上述内容的信息?或者有其他方法来限制最大内存使用量吗?


查看我在 VS2022 中创建的一个名为 Mime.exe 的早期 .NET 6 控制台项目,在构建过程中,它会在输出目录中创建一个 Mime.runtimeconfig.json 文件。所以肯定要以可执行文件的名称作为前缀。作为参考,这是具有工作堆限制的内容:

{
  "runtimeOptions": {
    "tfm": "net6.0",
    "framework": {
      "name": "Microsoft.NETCore.App",
      "version": "6.0.0"
    },
    "configProperties": {
      "System.Reflection.Metadata.MetadataUpdater.IsSupported": false,
      "System.GC.HeapHardLimit": 1000000
    }
  }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

限制C#程序使用的最大内存 的相关文章

  • 按成员序列化

    我已经实现了template
  • 不支持将数据直接绑定到存储查询(DbSet、DbQuery、DbSqlQuery)

    正在编码视觉工作室2012并使用实体模型作为我的数据层 但是 当页面尝试加载时 上面提到的标题 我使用 Linq 语句的下拉控件往往会引发未处理的异常 下面是我的代码 using AdventureWorksEntities dw new
  • 用于登录 .NET 的堆栈跟踪

    我编写了一个 logger exceptionfactory 模块 它使用 System Diagnostics StackTrace 从调用方法及其声明类型中获取属性 但我注意到 如果我在 Visual Studio 之外以发布模式运行代
  • 关于 C++ 转换:参数 1 从“[some_class]”到“[some_class]&”没有已知的转换

    我正在研究 C 并且遇到了一个错误 我不知道确切的原因 我已经找到了解决方案 但仍然想知道原因 class Base public void something Base b int main Base b b something Base
  • 不同枚举类型的范围和可转换性

    在什么条件下可以从一种枚举类型转换为另一种枚举类型 让我们考虑以下代码 include
  • C++ OpenSSL 导出私钥

    到目前为止 我成功地使用了 SSL 但遇到了令人困惑的障碍 我生成了 RSA 密钥对 之前使用 PEM write bio RSAPrivateKey 来导出它们 然而 手册页声称该格式已经过时 实际上它看起来与通常的 PEM 格式不同 相
  • 显示UnityWebRequest的进度

    我正在尝试使用下载 assetbundle统一网络请求 https docs unity3d com ScriptReference Networking UnityWebRequest GetAssetBundle html并显示进度 根
  • 使用 Bearer Token 访问 IdentityServer4 上受保护的 API

    我试图寻找此问题的解决方案 但尚未找到正确的搜索文本 我的问题是 如何配置我的 IdentityServer 以便它也可以接受 授权带有 BearerTokens 的 Api 请求 我已经配置并运行了 IdentityServer4 我还在
  • SolrNet连接说明

    为什么 SolrNet 连接的容器保持静态 这是一个非常大的错误 因为当我们在应用程序中向应用程序发送异步请求时 SolrNet 会表现异常 在 SolrNet 中如何避免这个问题 class P static void M string
  • 如何在 C 中调用采用匿名结构的函数?

    如何在 C 中调用采用匿名结构的函数 比如这个函数 void func struct int x p printf i n p x 当提供原型的函数声明在范围内时 调用该函数的参数必须具有与原型中声明的类型兼容的类型 其中 兼容 具有标准定
  • 垃圾收集器是否在单独的进程中运行?

    垃圾收集器是否在单独的进程中启动 例如 如果我们尝试测量某段代码所花费的进程时间 并且在此期间垃圾收集器开始收集 它会在新进程上启动还是在同一进程中启动 它的工作原理如下吗 Code Process 1 gt Garbage Collect
  • 这些作业之间是否存在顺序点?

    以下代码中的两个赋值之间是否存在序列点 f f x 1 1 x 2 不 没有 在这种情况下 标准确实是含糊不清的 如果你想确认这一点 gcc 有这个非常酷的选项 Wsequence point在这种情况下 它会警告您该操作可能未定义
  • 覆盖子类中的字段或属性

    我有一个抽象基类 我想声明一个字段或属性 该字段或属性在从该父类继承的每个类中具有不同的值 我想在基类中定义它 以便我可以在基类方法中引用它 例如覆盖 ToString 来表示 此对象的类型为 property field 我有三种方法可以
  • WPF/C# 将自定义对象列表数据绑定到列表框?

    我在将自定义对象列表的数据绑定到ListBox in WPF 这是自定义对象 public class FileItem public string Name get set public string Path get set 这是列表
  • 如何从两个不同的项目中获取文件夹的相对路径

    我有两个项目和一个共享库 用于从此文件夹加载图像 C MainProject Project1 Images 项目1的文件夹 C MainProject Project1 Files Bin x86 Debug 其中有project1 ex
  • 测试用例执行完成后,无论是否通过,如何将测试用例结果保存在变量中?

    我正在使用 NUNIT 在 Visual Studio 中使用 Selenium WebDriver 测试用例的代码是 我想在执行测试用例后立即在变量中记录测试用例通过或失败的情况 我怎样才能实现这一点 NUnit 假设您使用 NUnit
  • 是否可以在 .NET Core 中将 gRPC 与 HTTP/1.1 结合使用?

    我有两个网络服务 gRPC 客户端和 gRPC 服务器 服务器是用 NET Core编写的 然而 客户端是托管在 IIS 8 5 上的 NET Framework 4 7 2 Web 应用程序 所以它只支持HTTP 1 1 https le
  • 哪种 C 数据类型可以表示 40 位二进制数?

    我需要表示一个40位的二进制数 应该使用哪种 C 数据类型来处理这个问题 如果您使用的是 C99 或 C11 兼容编译器 则使用int least64 t以获得最大的兼容性 或者 如果您想要无符号类型 uint least64 t 这些都定
  • Windows 和 Linux 上的线程

    我在互联网上看到过在 Windows 上使用 C 制作多线程应用程序的教程 以及在 Linux 上执行相同操作的其他教程 但不能同时用于两者 是否存在即使在 Linux 或 Windows 上编译也能工作的函数 您需要使用一个包含两者的实现
  • 如何在文本框中插入图像

    有没有办法在文本框中插入图像 我正在开发一个聊天应用程序 我想用图标图像更改值 等 但我找不到如何在文本框中插入图像 Thanks 如果您使用 RichTextBox 进行聊天 请查看Paste http msdn microsoft co

随机推荐

  • 在 Jasper 报表上的表中显示 JSON 数组

    我正在尝试使用由 JAVA 函数传递的 JSONDatasource 创建 JasperReport 这是我发送给 jasper 的 JSON Person FirstName John LastName Smith Contacts Ty
  • XML、命名空间和 E4X

    有人可以解释一下 XML 中的命名空间 xmlns 到底有什么用 以及如何使用它们在使用 E4X 导航 XML 时使用它们 最好在 ActionScript 3 中 我无法完全理解它们的目的和用途 理论上 XML命名空间是用来避免与标签名称
  • 如何在tensorflow v2中启用cuda统一内存

    In tensorflow1 x 有一个选项 例如use unified memory and per process gpu memory fraction这有可能触发 CUDA UVM 的使用 但这怎么能在tensorflow 2 0
  • 使用 Moq 重写同一类中的虚拟方法

    我们正在使用 Moq 来对我们的服务类进行单元测试 但仍停留在如何测试服务方法调用同一类的另一个服务方法的情况 我尝试将被调用的方法设置为虚拟 但仍然不知道在最小起订量中要做什么 例如 public class RenewalService
  • 如何创建一个 Grid,其 X 轴和 Y 轴绑定到不同的集合?

    我需要显示一些内容 其中沿列显示一周的天数 沿行显示类别列表 以及单元格中到期的任务列表 参见下面的草图 我觉得解决方案应该很简单 但对于如何绑定这样的东西我还是一片空白 单元格中的行 列和数据项都是动态的 具体取决于用户正在查看的周 理想
  • 无法转换 COM 对象 - Microsoft Outlook 和 C#

    我编写了这段代码来查看 Outlook 邮箱中的未读邮件 代码如下 Microsoft Office Interop Outlook Application app Microsoft Office Interop Outlook Item
  • 上传压缩图片

    我是安卓新手 我创建了一个应用程序来将图像上传到服务器 它非常适合小尺寸图像 但对于较大图像 gt 1 MB 这不起作用 这是我上传图片的功能 class UploadFile extends AsyncTask
  • 在android studio 0.2.8中导入外部库

    我试图将外部库导入到 android studio 中的 android 项目中 这里的许多答案都说它可以从设置中的项目结构中的模块完成 但是自 0 2 8 更新以来 项目结构中没有库 模块 我现在如何导入外部库 也许这是 0 2 8 更新
  • 将数据获取到复杂性:未调用 ExtensionDelegate

    看起来前几周其他人也遇到过这个问题 但我还没有找到任何解决方案 我正在尝试做一件非常基本的事情 将数据从我的 iOS 应用程序或我的 Watch 应用程序获取到我的复杂功能控制器 事实证明 我完成这件事的能力比我想象的要差得多 watchO
  • pub get 错误:无法创建链接...(操作系统错误:函数不正确)

    我在尝试获取 Angular dart Codelab 的包时遇到错误 10 01 28 Running pub get Pub get failed 1 Resolving dependencies Cannot create link
  • Flyway 在空模式上发现非空模式

    我正在尝试实施数据库迁移Flyway 4 2 0 Oracle 11g 我有这个空架构 当我尝试迁移时 Flyway 说 造成原因 org flywaydb core api FlywayException 发现非空 模式 PASHA 没有
  • 具有 CSS 变量的 SVG 半径或位置

    是否可以在 SVG 中使用 CSS 变量来操作 中的半径或位置 等值属性样式 一个元素 例如 在下面的代码中 我添加了一个 CSS 颜色变量 dark text clr和一个半径变量 radius 当我使用填充中的颜色 CSS 变量 htt
  • JavaFX HBox 对齐

    我一直在使用 JavaFX 开发一个软件 但我遇到了一个愚蠢但令人担忧的问题 在代码的某些部分我有一个HBox 并且 其中包含三项 image a label and a VBox 问题是我想要image向左对齐 即紧挨着左边距window
  • 无法在 mac osx 10.10 上构建 python gevent

    概要 pip install gevent不起作用 深入挖掘 我下载了gevent tar gz并手动运行构建 python setup py build 得到同样的错误 running build running build py run
  • 存储没有大小的字符串文字数组 - 关于数组大小的简单模板

    我正在探索存储没有 sidecar 大小信息的文字数组 任何类型 的方法 我已经概述了一些方法 但每种方法都有一些挥之不去的问题 这是最简单的方法 模板超过数组大小 请注意 这是一个简单的测试用例 实际的类可能具有其他成员 其他模板参数以及
  • 使用 XadES-BES 算法通过 XMLDSIG 进行 XML 验证

    程序使用的某些信息使用 xml 格式的输入文件 这些文件具有以下结构
  • 从 Word VBA 编辑工作簿(无论打开还是关闭)

    我正在尝试在 Word 中编写宏 以便可以将一些信息保存到计算机其他位置的 Excel 文件中 为此我写了这个 Dim exlApp As Object Dim exlWbk As Object Set exlApp CreateObjec
  • 如何使 TextView 的内容可水平和垂直滚动

    我想滚动在 TextView 中查看的结果 这是我的 xml
  • 即使在 java 8 中,SecureRandom 的创建也很慢

    我搜索了这个问题 我的印象是 它在 java 8 中得到了解决 但是突然间 我开始在基于 ubuntu 14 04 的新虚拟机中遇到这个问题 2015 07 27 14 56 35 324 INFO 11809 localhost star
  • 限制C#程序使用的最大内存

    我需要限制 C 程序使用的最大内存 即进行安排 以便如果其内存消耗超过一定限制 它将立即崩溃 而不是继续向操作系统请求更多内存 代码已经正确且高效 但内存消耗在运行时根据输入数据的不同而变化不可预测 某些输入数据集仅使用几兆字节后就可以正确