gpt4 book ai didi

c# - 随机 RAM 使用量

转载 作者:行者123 更新时间:2023-11-30 20:12:24 25 4
gpt4 key购买 nike

我希望有人能解释为什么我的应用程序在加载时使用不同数量的 RAM。我说的是直接使用 exe 的编译版本。这是一个非常基本的应用程序,在应用程序的启动中没有条件分支。然而,每次我启动它时,RAM 量都在 6MB-16MB 之间变化。

我知道无论如何它的使用都很少,但我很好奇为什么会这样。

编辑:进一步说明该应用程序的实际作用。
这是一个 WinForm 项目。
它使用 sqlclient 连接到数据库以检索服务器列表。
基于该列表,创建了一系列按钮来启动和停止这些服务器上的服务。
使用 System.Timers 类每 20 秒审核一次这些服务器上的服务状态。
此时的应用程序位于此处,等待用户通过单击其中一个按钮来启动/停止服务。

最佳答案

这里的技巧是任务计划报告的 RAM 量不是您的应用程序使用的 RAM 量。相反,它是保留供您的应用程序使用的 RAM 量。

请记住,对于 .Net 等托管框架,您不会直接请求或释放内存。相反,垃圾收集器会为您管理内存。在给定时间为您的应用程序保留的内存量可能会有所不同,并且取决于很多不同的因素,包括当时其他程序造成的内存压力。

这样想:如果您的应用程序需要 10 MB 的 RAM,是在超过 10 个请求/释放时一次请求 1 MB 并将其返回给操作系统更快,还是一次保留一个 block 更快?请求/释放?现在将其扩展到您不知道确切需要多少 RAM 的场景,只是知道它大约在 10 MB 左右。此外,您的计算机还有 1 GB 未使用的空间。当然,最好的办法是占用可用 RAM 的大块。相对于未使用的 ram,即使 20 或 30 MB 也不是不合理的,因为未使用的 RAM 是浪费性能。

如果您的系统稍后开始感到一些内存压力,那么 .Net 可以轻松地将一些 RAM 返回给系统。这是托管语言有时可以提供更好性能的方式之一,而不是使用传统内存管理的 C++ 等语言:垃圾收集器可以在分配内存时更轻松地考虑整个系统的健康状况。

关于c# - 随机 RAM 使用量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2669944/

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