.net 查看数据填充的最佳实践?

.net 查看数据填充的最佳实践?,.net,performance,garbage-collection,.net,Performance,Garbage Collection,我在一个.NET应用程序上工作,遇到了一个内存错误(我是一个java开发人员,可以做其他事情),我一直在考虑性能。我所说的不是记忆问题。记忆问题刚开始让我思考 我在ASP.NET应用程序中重复了我在无数J2EE应用程序中使用过的一种趋势:使用业务实体填充下拉列表。我越想它,就越不喜欢它。例如,在我正在使用的应用程序中,我们有一个当前项目的下拉列表。项目是对象的图形。但是,要创建列表,我们将收回所有项目,创建图形并仅使用id和显示名称。这似乎是一种可怕的浪费。公平地说,dal层完全是手写的。首席架

我在一个.NET应用程序上工作,遇到了一个内存错误(我是一个java开发人员,可以做其他事情),我一直在考虑性能。我所说的不是记忆问题。记忆问题刚开始让我思考

我在ASP.NET应用程序中重复了我在无数J2EE应用程序中使用过的一种趋势:使用业务实体填充下拉列表。我越想它,就越不喜欢它。例如,在我正在使用的应用程序中,我们有一个当前项目的下拉列表。项目是对象的图形。但是,要创建列表,我们将收回所有项目,创建图形并仅使用id和显示名称。这似乎是一种可怕的浪费。公平地说,dal层完全是手写的。首席架构师不允许像NHibernate这样的ORM

我意识到所有这些对象都在GEN0中,很快就会被垃圾收集。让我担心的是,我正在向总承包商征税。处理GC所需的CPU的5%是我无法在其他地方使用的CPU的5%。这个网站是我真正尊重的少数几个网站之一。你们都怎么想?使用实体模型是否不好?我应该创建一组只包含显示值和id的IdValue对象吗?创建这样一个视图对象层(我不认为这会进入业务层)是否会创建冗余代码

谢谢,
JPD

不用担心GC的负担,它会根据您的应用程序调整自身,以提供最佳性能。是的,最好是减少内存占用,但我认为这并不像你想象的那么严重


一个好的DAL允许您只返回所需的数据,这将提高应用程序的性能,并减少应用程序所需的内存量。但是,无论您是否使用了“太多”内存,我认为在大多数情况下,GC都能够很好地处理它。

另一种方法是为您的目的创建轻量级对象。在本例中,您将拥有一个只有id和显示名称的轻量级项目对象。然后需要决定是否重新使用现有的DAL或创建DAL的轻量级版本。

在过去几年中,我一直在使用在线业务.NET应用程序,但尚未遇到通过帮助垃圾收集器更高效地工作来解决的性能问题

另一方面,收集指标对于提高性能、内存使用等方面有着难以置信的帮助