WPF应用程序中的内存使用-如何跟踪和管理?(初学者范围)

WPF应用程序中的内存使用-如何跟踪和管理?(初学者范围),wpf,vb.net,memory,dataset,Wpf,Vb.net,Memory,Dataset,我有一个小规模的WPF应用程序,使用VB.net作为后台代码,我想添加某些功能,但我担心性能。我真的很感激任何回复,特别是如果你能提供关于这方面的初学者友好文章,但请帮助我,这样我就可以放心了 1) 我的应用程序与第三方数据库交互,向用户显示“实时”数据。我建议的方法是创建一个后台工作程序,每隔30秒查询一个数据库并显示数据。我查询了大约2000条所有长整数类型的记录,将它们存储在数据集中,然后使用LINQ创建WPF控件绑定到的可观察集合的子集 这是不是太密集了?我对2000条长整数记录使用了多

我有一个小规模的WPF应用程序,使用VB.net作为后台代码,我想添加某些功能,但我担心性能。我真的很感激任何回复,特别是如果你能提供关于这方面的初学者友好文章,但请帮助我,这样我就可以放心了

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

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

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

3) 是否有一种方法可以量化特定代码块、变量存储或数据存储对最终用户的负担?什么是可以接受的

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


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

如果您确实想/需要了解应用程序内存使用的详细信息,请使用内存分析器:

  • (商业)
  • (商业)
  • (商业)
  • (免费)
  • (商业)
您的其他问题很难回答,因为所有相关方面都相当未知:

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


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

如果您确实想/需要了解应用程序内存使用的详细信息,您应该使用内存分析器:

  • (商业)
  • (商业)
  • (商业)
  • (免费)
  • (商业)
您的其他问题很难回答,因为所有相关方面都相当未知:

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


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

我将尝试一些。字节整数使用一个字节的内存。int32使用4个字节。因此,2000Int32将使用8KB。如果您有一个查询,您需要大量运行,并且需要5-10秒的时间来仔细查看该查询并添加任何缺少的索引。如果这是动态数据,则使用(nolock)可以更快地使用更少(无)锁定。如果查询为所有用户返回相同的数据,那么我希望您不会让所有用户都运行相同的查询。您应该有一个两层应用程序,其中服务器每x秒运行一次查询,并将该答案发送给请求查询的多个客户端。至于一个对象的大小,只要把它加起来——一个字节就是一个字节。您可以将应用程序置于调试状态,并了解哪些语句是快的,哪些语句是慢的

我就试试看。字节整数使用一个字节的内存。int32使用4个字节。因此,2000Int32将使用8KB。如果您有一个查询,您需要大量运行,并且需要5-10秒的时间来仔细查看该查询并添加任何缺少的索引。如果这是动态数据,则使用(nolock)可以更快地使用更少(无)锁定。如果查询为所有用户返回相同的数据,那么我希望您不会让所有用户都运行相同的查询。您应该有一个两层应用程序,其中服务器每x秒运行一次查询,并将该答案发送给请求查询的多个客户端。至于一个对象的大小,只要把它加起来——一个字节就是一个字节。您可以将应用程序置于调试状态,并了解哪些语句是快的,哪些语句是慢的

谢谢你的链接!我去看看。老实说,这并不是非常重要,但作为一个初学者,我花了好几个小时试图“优化”,这太长了。。所以我需要知道我的努力是否白费。至于有关数据库的问题,不幸的是,我不确定。这是一个informix数据库,有几百个用户,我没有关于这台机器的信息。查询本身大约需要5-10秒才能运行,我将使用后台工作程序每隔30秒运行一次。@kdonah3只优化瓶颈问题。。。关于查询-我认为每次运行5-10秒是很长的时间,也许缺少一些索引?由于如此多的用户每30秒进行一次查询,这将是一个真正的问题。查询结果是否特定于用户?或者它是否为所有用户返回相同的数据?它为所有用户返回相同的数据,但一次只有5-6个用户在运行它。5-10秒可能有点长,是的。。。我可能会通过检索更少的记录来记下它。@kdonah3 2000记录并没有那么多。。。在我看来,DB和/或网络