我希望有人可以解释为什么加载时我的应用程序使用不同数量的RAM.我说的是直接使用exe的编译版本.这是一个非常基本的应用程序,在应用程序启动时没有条件分支.然而,每次启动时,RAM的数量从6MB到16MB不等.
我知道这是在使用的小端,但我很好奇为什么会发生这种情况.
编辑:更详细地说明应用程序实际执行的操作.
这是一个WinForm项目.
它使用sqlclient连接到数据库以检索服务器列表.
根据该列表,将创建一系列按钮以在这些服务器上启动和停止服务.
使用System.Timers类每20秒审计这些服务器上的服务状态.
此时的应用程序位于此处,并通过其中一个按钮单击等待用户输入以启动/停止服务.
这里的技巧是任务计划报告的RAM量不是应用程序使用的RAM量.相反,它是保留供您的应用程序使用的RAM量.
请记住,对于像.Net这样的托管框架,您不会直接请求或释放内存.相反,垃圾收集器为您管理内存.在给定时间为应用程序保留的内存量可能会有所不同,具体取决于许多不同因素,包括其他程序当时创建的内存压力.
可以这样考虑:如果您的应用需要10 MB的RAM,请求更快并将其返回到操作系统1 MB,一次超过10个请求/发布,或者一次性保留块一个请求/发布?现在将其扩展到您不确切知道需要多少RAM的情况,只是它在10 MB左右的某个地方.此外,您的计算机有1 GB未使用.当然,最好的办法是占用大量可用内存.即使是20或30 MB相对于未使用的RAM也不合理,因为未使用的RAM会浪费性能.
如果您的系统后来开始感觉到一些内存压力,那么.Net可以轻松地将一些RAM返回给系统.这是托管语言有时比传统内存管理的C++语言提供更好性能的方式之一:垃圾收集器可以在分配内存时更轻松地将整个系统运行状况考虑在内.
| 归档时间: |
|
| 查看次数: |
171 次 |
| 最近记录: |