【发布时间】:2010-04-06 17:42:11
【问题描述】:
我有一个在 32 位机器上运行的 .Net 应用程序。该应用程序是一个 Windows 服务。它始终徘徊在 600-800 MB 范围内。这是不是一个问题。如果应用程序超过 1 GB,是否是内存问题?
【问题讨论】:
-
BTW - 600-800MB 怎么测?您使用什么工具来报告此内存使用情况?
我有一个在 32 位机器上运行的 .Net 应用程序。该应用程序是一个 Windows 服务。它始终徘徊在 600-800 MB 范围内。这是不是一个问题。如果应用程序超过 1 GB,是否是内存问题?
【问题讨论】:
很难判断内存使用是否有问题。
我想回答几个问题:
如果您在任何答案中发现“否”,我将开始认为这是一个问题。 1 GB 问题也是如此。
编辑:修正了一些错别字
【讨论】:
不,如果主机有足够的内存,那很好。但是,您可能想要监视完整的 GC 运行;完全垃圾收集不应该经常发生(偶尔一次,肯定不是每隔几秒钟),如果这样做表明进程正在其内存限制上运行并且“浪费”太多时间试图恢复内存,最终大大减慢了这个过程。
【讨论】:
超过 1GB 不会遇到任何问题。
但是,如果您的应用程序直接针对 x86,或者在 32 位 Windows 上运行,您将在 1.2-1.6GB 之间遇到问题。 .NET 应用程序在作为 32 位应用程序运行时,往往会开始接收此范围内的内存不足错误(而不是您通常期望的 2GB)。
话虽如此,如果您的应用程序有充分的理由使用这么多内存,并且始终保持在 1GB 以下,那么这应该没有问题。
【讨论】:
使用 1 Gig 应该没问题。这是一个关于 .net 对象可以使用的最大内存量的问题的链接:
【讨论】: