相关疑难解决方法(0)

高效的垃圾收集

考虑以下对象

class someObject;
{
   public objectA A{get;set;}
   public objectB B{get;set;}
   public objectC C{get;set;}
   public objectD D{get;set;}
   //...
}
Run Code Online (Sandbox Code Playgroud)

在某些时候ObjectD,不再需要,但实例someObject仍然存在,并会为几个小时这样做,objectD占用了很多的内存,以便以后它的作用是做我没有将它设置为null.

  • 这是否意味着ObjectD一旦我将其设置为null ,内存将被释放?
  • 如果一个对象在某个范围内设置了很长时间,那么.NET会怎么做呢?

c# garbage-collection

3
推荐指数
1
解决办法
498
查看次数

在我使用完服务后,我应该处理服务(层)类吗?

所以我的项目中有一个包含所有业务逻辑的服务层.它是一个MVC项目,因此当用户调用需要某些逻辑的页面时,将实例化服务类,然后使用(来自控制器).但它不会再次使用,因为新请求将再次实例化一个新对象.

我应该在使用它们之后处理这些服务类(使用'using'语句吗?或者我不会从中获得任何好处,因为垃圾收集器反过来不会太晚了?如果是这种情况,同样适用于使用我想我的存储库对象.

c# asp.net-mvc memory-management

3
推荐指数
1
解决办法
1656
查看次数

溢出我的记忆,强制垃圾收集器?

我怎么能故意溢出我的记忆,强迫垃圾收集?有人可以提出这样的算法:

while ( garbage collector starts ) {
      overflow my memory with something easily disposable
}
Run Code Online (Sandbox Code Playgroud)

编辑:给所有使用GC.Collect方法的人.我一直都认为,GC不能强制以程序化的方式发生.猜猜,我错了.谢谢你的回答.

c# memory garbage-collection overflow

2
推荐指数
1
解决办法
1370
查看次数

使用C#后清除数组

我用这种方式在C#中声明了一个数组:

  public ushort[][] pixels16;
Run Code Online (Sandbox Code Playgroud)

然后我用500个图像的像素数据填充它,数组中的每个元素包含262144个项目.问题是,在我使用它之后变得太大所以我需要摆脱它以释放内存..我怎么能这样做?

c# arrays clear

0
推荐指数
2
解决办法
5707
查看次数

内存管理理念?

我正在使用SharpDX用C#编写游戏......所以,对于绘制一个帧,目前我正在使用一个Timer,间隔设置为1; 但这对游戏来说太慢了,所以我想要更快的东西...首先,如果我使用另一个线程进行游戏(另一个用于Window本身)并使用"[while(InGame)]"声明,它很快,但GC永远不会释放单个对象,并且内存使用率只会上升......

如果我使用内置"RenderLoop"功能的SharpDX,它也很快,但GC仍然没有做任何事情......

我试图覆盖Window窗体"WndProc"功能,但游戏只刷新自己然后我像疯子一样移动鼠标......

这是我的第一个真正的游戏,有很多功能,所以如果你们有任何想法,我将如何解决它,或者我应该使用什么,我会很感激...窗体表格生命周期中必须有一些东西像一个

void FormLife
{
     WndProc();
     HandleEvents();
     etc...
}
Run Code Online (Sandbox Code Playgroud)

(这只是一个很难的例子......)

或者我怎么能强迫GC在while(InGame)状态结束时完成它的工作呢?我已经尝试GC.Collect();但它不起作用......

c# memory

0
推荐指数
1
解决办法
125
查看次数