gpt4 book ai didi

c# - 在.NET 中快速检查或限制线程内存使用?

转载 作者:IT王子 更新时间:2023-10-28 23:34:47 25 4
gpt4 key购买 nike

我看到了一些与此问题类似的讨论,但没有任何内容能真正回答我所面临的问题。

我正在开发一个可以通过解释脚本自定义软件行为的 C# 应用程序。每个脚本都在 C# 应用程序的不同子线程上运行。 (我正在使用 Jint javascript 解释器来运行脚本,但我的问题对于线程可以在 .NET 应用程序中动态运行的任何其他情况同样有效)。到目前为止,这工作得很好。但我需要确保应用程序能够自行运行。如果出现可能导致应用程序耗尽堆空间的错误脚本,我需要能够检测并停止任何占用过多内存的线程。从概念上讲,这可以看作类似于 Web 浏览器确定页面上的 javascript 是否需要太长时间或太多内存来执行。问题是,我无法确定 .NET 中是否有任何方法可以做到这一点。

有什么方法可以对线程可以使用的内存量进行硬性限制,或者从父线程快速检查线程的内存利用率?我不关心线程内的堆栈溢出,只关心堆空间。

“显而易见”的解决方案当然是将解释拆分为单独的进程而不是单独的线程,但这会对我的应用程序造成重大的性能影响,因为这些脚本会修改软件行为,因此旨在紧密耦合.应用程序级监控也不理想,因为它不会提供有关哪个脚本本身没有运行的信息。此外,用于调试的慢速方法将不起作用,因为脚本旨在允许快速修改软件,而不必构建、测试和重新部署。我只需要一些相当快速的方法来检测占用过多内存的线程,这样我就可以杀死并忽略它的脚本。

谢谢!

最佳答案

正如其他海报所暗示的那样,在单独的进程中托管可能更容易。更轻量级的方法是托管在单独的应用程序域中并使用 app-domain resource monitoring api来监控内存使用情况。

关于c# - 在.NET 中快速检查或限制线程内存使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6487400/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com