相关疑难解决方法(0)

C#Production Server,我收集垃圾吗?

我知道这有很多线索.我读了一些.

我想知道在我的情况下是否正确 GC.Collect();

我有一台MMORPG服务器,在生产中它日夜在线.并且每隔一天重新启动服务器以实现对生产代码库的更改.每20分钟,服务器暂停所有其他线程,并序列化当前游戏状态.这通常需要0.5到4秒

GC.Collect();序列化之后是一个好主意吗?

显然,服务器不断创建和销毁游戏物品.

我会在性能或内存优化/使用方面获得臭名昭着的收益吗?

我不应该手动收集吗?

我已经读过如果在错误的时刻或太频繁地使用收集会如何变坏,但我认为这些存储既是收集的好时机,也不是那么频繁.

服务器在框架4.0中

更新回复评论:

我们随机经历服务器冻结,有时,出乎意料的是,服务器内存使用量将逐渐增加,直到它达到服务器占用太长时间来处理任何网络操作的程度.因此,我正在考虑许多不同的方法来解决这个问题,这就是其中之一.

c#

6
推荐指数
1
解决办法
221
查看次数

在每天24小时运行的应用程序上使用GC.Collect是否明智?

我们的应用程序每天运行24小时,每周运行7天.有时CPU会达到100%然后再回到80%.与RAM相同.GC.Collect几小时后手动调用或自动离开它是否很聪明.

我们正在使用C#2010,SQL 2008和Fluent Nhiberanet.这是桌面应用程序.

c# garbage-collection

5
推荐指数
1
解决办法
828
查看次数

C#中Win表单数量的限制

我正在编写WinForms应用程序,到目前为止它包含37个表单.这是因为我的项目需求.

我的问题是:

  1. 在C#中创建的表单数量是否有限制?
  2. 它对应用程序性能有影响吗?

谢谢你的帮助.

c# performance winforms

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

垃圾收集.net中的最佳实践

System.GC.Collect和之间有什么区别Dispose()

它们不是用于同一目的,何时应该使用它们; 什么是最佳做法?

.net c# oop garbage-collection

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

USB串行端口未插入但仍在端口列表中

所以我有一个代码来检测插入该方法的设备

SerialPort.GetPortNames();
Run Code Online (Sandbox Code Playgroud)

无论如何,一切正常,除非我打开现有端口(从列表中选择它)

port = new SerialPort(portname, 9600);
port.Open();
Run Code Online (Sandbox Code Playgroud)

然后,如果设备被拔掉,它不会从列表中删除..我认为这是因为端口没有关闭..

但我无法弄清楚为什么它仍然在列表中如果我不手动关闭它,即使设备已拔下插头..

port.Close();
Run Code Online (Sandbox Code Playgroud)

因为如果我打开一个不在列表中的端口,它就不会出现在列表中.

谁能解释我这种行为?

c# serial-port

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

.NET中的析构函数

NET已经很久了,现在又开始学习C#了.我想我多年前曾经问过的一件事,得到了答案,但现在完全忘记了它,因为它不是我暗中使用的东西,而是析构函数.当我正在学习C#时,我读了一篇关于如何在C#中创建它们的文章,但它让我感到疑惑.假设我实例化一个具有另一个类的对象的类.

Class C1
{
  // Do something here
}

Class A
{
  C1 objObjectToClass1 = new C1();
}   

Class Main
{
   A objObjectToClassA = new A();
}
Run Code Online (Sandbox Code Playgroud)

我使对象objObjectToClassAnull我已经导致相信这是相当于object = nothing在VB.NET.

objObectToClassA = null;
Run Code Online (Sandbox Code Playgroud)

这个动作也会破坏objObjectToClass1吗?

c# destructor

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

调用.net垃圾收集器会更有效吗?

由于在CLR中调用垃圾收集器的开销,离开它是否更有效,或者当对象超出范围时强制进行垃圾收集?

c# clr optimization performance garbage-collection

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

垃圾收集请求?

我们知道,在运行时,当内存中没有足够的空间来形成对象时,垃圾收集会自动请求。据我所知,垃圾收集会自动调用,但是当我们在现实世界中进行一些编程时,调用垃圾收集就变得必不可少。举个例子,如果我们在第一步中编写一个程序,我想调用垃圾收集来优化内存以进一步创建对象的意思是在运行时。那么我们如何调用垃圾收集器呢?

.net c#

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

你使用垃圾收集器的现实生活场景?

我知道所有的理论:

我知道什么是GC,何时调用dispose,在调用时终结.

我想知道,在你的直播项目中..哪种情况已经使用了这一切.

  • 我的意思是当项目经理/客户坚持要清理内存时?当你在程序中发现任何错误时?一种错误消息或错误日志?当程序因不必要的内存而崩溃时?或任何其他情况?

.net c# asp.net garbage-collection

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

我应该打电话给GC.Collect

我有一个wcf服务作为Windows服务托管,具有以下功能:

public int SendMultipleMessages(List<Message> messages)
{
  foreach (var message in messages)
  {
     //Do some stuff with the messages ie. get an id to return, save info in a db.
  }

  //Would it make sence to collect here ??
  Gc.Collect();

  Task.Factory.StartNew(() =>
        {
            //very time demanding task
            _sendRequestHandler.SendMultipleMessages(BatchId);
        });

 return BatchId;
}
Run Code Online (Sandbox Code Playgroud)

List <Message>对象(通常情况下)通常使用高达1 GB的内存,在这样的情况下调用GC.Collect是有意义的,因为我不再使用该列表,或者我应该让垃圾收集器自己处理这个?

c# garbage-collection

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

调用创建对象的函数会导致内存泄漏吗?

菜鸟在这里。假设我做了一个这样的函数:

public void something()
{
   List<string> list = new List<string>();
}
Run Code Online (Sandbox Code Playgroud)

然后我打电话给something()10x。它会创建 10 个同名对象,还是会替换为新的空对象,因此对象总数仍为 1?这样做会导致内存泄漏吗?抱歉英语不好。

c# object

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

C# 析构函数与 IDisposable

只是想了解为什么destructor在实例被处置后在 USING 的范围之外被调用。我知道不需要destructor何时IDisposable实施。这是我的例子:

using System;

namespace Destructor
{
    class Program
    {
        static void Main(string[] args)
        {

            using (var a = new A())
            {
                Console.WriteLine("... inside USING ...");
            }

            Console.WriteLine("...END...");
        }
    }

    //............................................................

    class A : IDisposable
    {
        public A()
        {
            Console.WriteLine("...Constructor called...");
        }

        ~A()
        {
            Console.WriteLine("...Destructor called...");
        }

        public void Dispose()
        {
            Console.WriteLine("...Dispose called...");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

输出:

...构造函数调用...

... 里面使用 ...

...处置称为...

...结尾...

...析构函数调用...

c# destructor finalizer

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