WPF应用程序中的内存使用情况 - 如何跟踪和管理? (BEGINNER SCOPE)

时间:2012-02-12 18:10:34

标签: wpf vb.net memory dataset

我有一个使用VB.net作为代码的小规模WPF应用程序,我想添加某些功能,但我关注性能。我真的很感激任何回应,特别是如果你可以包括关于此的初学者友好的文章,但请帮助我,所以我可以放心......

1)我的应用与第三方数据库交互,向用户显示“实时”数据。我提出的方法是创建一个后台工作程序,每隔30秒查询一次数据库并显示数据。我查询所有长整数类型的2,000条记录,将它们存储在数据集中,然后使用LINQ创建WPF控件绑定的可观察集合的子集。

这太密集了吗?我用2000条长整数记录多少内存?后台工作人员每30秒查询一次是否太费力?最终会崩溃吗?它会干扰用户的其他日常工作(excel,电子邮件等)吗?

2)如果一个应用程序不断地从文本文件中读/写,那么如果用户正在进行日常工作,那么这会对用户造成什么损害?我希望该应用程序读取/写入文本文件,但我不希望它以某种方式干扰该人正在做的其他事情,因为这个应用程序将更像是“在后台运行时检查它我需要”应用程序。

3)有没有办法量化某个代码块,变量存储或数据存储对最终用户的征税?什么是可以接受的?

4)我有几个(t)列表,我用作“全局”列表,我可以在应用程序的任何窗口中点击它们来显示数据。有没有办法量化这些列表占用多少内存?列表的范围从整数列表到具有许多属性的变量列表。我可以以某种方式量化这对应用程序或最终用户的征税吗?

感谢您的帮助,我将继续搜索文章以回答我的问题

2 个答案:

答案 0 :(得分:2)

如果你真的想要/需要了解应用程序的内存使用细节,你应该使用内存分析器:

您的其他问题很难回答,因为所有相关方面都是未知的:

  • 使用什么数据库?
  • 运行数据库服务器的机器有多强大?
  • 有多少用户?

在某些情况下,性能分析器可以提供帮助 - 例如,上面提到的内存分析器(特别是RedGate / JetBrains等)通常可以与性能分析器一起打包...

答案 1 :(得分:2)

我会尝试一些。字节整数使用一个字节的内存。 int32使用4个字节。所以2000 Int32将使用8 kb。如果你有一个查询,你需要运行很多,需要5-10秒,你需要仔细查看该查询并添加任何缺少的索引。如果这是动态数据,那么使用(nolock)可以更好,更快(少)锁定。如果查询为所有用户返回相同的数据,那么我希望您没有让所有用户运行相同的查询。您应该有一个双层应用程序,其中服务器每隔x秒运行一次查询,并将该答案发送给请求它的多个客户端。至于对象的大小,只需将其添加 - 一个字节是一个字节。您可以将应用程序置于调试中,并了解哪些语句快速而缓慢。