gpt4 book ai didi

c# - 在 C# 中通过在运行时创建的对象最小化 RAM 的使用

转载 作者:太空宇宙 更新时间:2023-11-03 18:57:16 24 4
gpt4 key购买 nike

我想知道在 C# 中创建对象、执行 LINQ 时的最佳实践是什么。例如,我意识到当我使用 LINQ 打开一个连接时,我应该将模型对象放入这样的 using 语句中:

using(var ctx = new mymodel())
{

}

现在,作为 EF 类的对象呢?

它们没有实现 IDisposable 接口(interface),因此在创建这样的对象时我不能做这样的事情,例如:

using(var user = new Users())
{

}

但是当这样调用一个 Action 时:

public ActionResult InsertUser()
{

var user = new Users();

}

我不清楚插入数据库后这个对象会发生什么。这个对象是留在内存中还是被释放了?如果不是,一旦不再需要内存,释放内存的最佳做法是什么......?

另一方面还有静态变量...

总而言之,我的问题是:

  • 在创建类的对象实例时释放内存的最佳做法是什么?

  • 在我有好的选择的每个类上实现 IDisposable 接口(interface)吗?

  • 在 .NET MVC 中创建静态变量时,释放此类变量占用的内存的最佳方式是什么?

  • Session 对象也有同样的问题吗?

附言伙计们,如果你们所有人都在阅读这篇文章发表您的意见或发布一些文档/博客文章的有用链接,以便我可以扩展我的视野,我将不胜感激 =)

最佳答案

在您进行任何性能调整之前,我强烈建议运行内存分析器(例如 JetBrains dotMemory,但还有其他)并找出问题的实际根源。如果没有分析器的信息,您的优化就像将手指伸向天空并大喊“彩虹!”一样。即充其量是无用的,最坏的情况是有害的。

此外,在发现探查器的问题之后,但在开始更改代码之前,我建议阅读垃圾收集在 .Net 中的工作原理。以下是一些帮助您入门的引用资料:

  1. MSDN Garbage Collection
  2. MSDN Garbage Collector Basics and Performance Hints
  3. .Net Garbage Collection in depth

这里有一些链接可以回答您的问题:

关于c# - 在 C# 中通过在运行时创建的对象最小化 RAM 的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42074630/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com