2014-11-24 68 views
-3

我有一个关于this非常有用的文章中描述为“低效内存使用”的问题。文章表明,低效的内存使用可能会导致显着的内存增长...我的意思是 - DRAMATIC。为什么查询大量字段会导致内存泄漏症状?

要回答我的问题,请先看看the article

我的问题是:任何人都可以解释为什么GC的行为方式,如本文的“低效内存使用”部分所示?即使在触发GC之后,内存级别仍然会缓慢但肯定会上升。

我编辑了这个问题,以更好地关注我的具体查询。一个好的答案将有助于许多开发人员更好地理解GC,从而开发更好的软件

非常感谢!

+3

使用一般说明无法诊断特定问题。您查询数据库并返回比所需数据更多的数据肯定是内存问题,但这并不意味着它会造成内存泄漏。要弄清楚**特别是**您遇到的问题需要使用检测内存泄漏并向您显示的工具。 – 2014-11-24 10:05:37

+1

使用JetBrains,ANTS Memory Profiler或任何其他内存分析器使用dotTrace内存配置文件。 – 2014-11-24 10:05:59

+0

您应该运行内存分析器来查看哪些内容仍然分配。或者您可以向我们展示一个最小可验证的例子,以便我们可以重现此问题。通常,当你将东西放入一个永远不会释放的静态位置时,就会发生这个问题,如内存中的会话存储。 – fejesjoco 2014-11-24 10:06:46

回答

0

如果“Web应用程序查询数据库,并带回比应用程序需要显著更多结果”,为什么GC不是说回来后,所有的查询与做内存,所有连接关闭,所有相关实体清理/整理?

第一个问题是,为什么数据库正在查询并带回显着更多需要的结果?为什么不首先解决这个问题?

如果你施加很大的内存压力(通常会创建很多临时数据,以后要发布),GC实际上会清除它,但是由于创建了这么多的数据,它会很慢并且非常无效。

+0

Konrad,谢谢你的回答。 请注意,问题是关于我在上面提到的文章中找到的示例,目的是帮助阐明垃圾收集的内部工作原理。这篇文章没有就如何处理我们的具体问题寻求任何建议 - 我们需要的所有建议都在上述文章中。 – Victoria 2014-11-24 18:04:20