C#,程序设计,内存使用

时间:2012-09-19 08:06:54

标签: c# optimization memory

所以我在节目设计方面非常业余。我在大学完成了一些课程,但他们都专注于学习语法和非常基本的设计原则。

无论如何,我正在用C#.Net编写一个客户端,通过RPC与rtorrent交互。我将torrent客户端信息存储在ITorrentClient接口中,并将Torrent对象中的torrent信息存储起来。要获取有关torrent的数据,需要从ITorrentClient调用函数,例如:

class Torrent
{
    string _hash;
    ITorrentClient _client;

    public Torrent(ITorrentClient client)
    {
        this._client = client;
    }

    public double UploadSpeed
    {
        get
        {
            return _client.getTorrentUploadSpeed(_hash);
        }
    }
}

不幸的是,这意味着如果你的torrent客户端中有大量的种子(就像我一样),你将会在内存中浪费数百个浪费的ITorrentClient。我如何设计我的程序,以便我没有数百个无用的物体漂浮在周围?

谢谢!

1 个答案:

答案 0 :(得分:1)

如果ITorrentClient的实现是引用类型(类)而不是值类型(结构),则每个_client的{​​{1}}属性将包含参考Torrent不是实际对象

考虑:

ITorrentClient

内存中只有var client = new MyTorrentClient(); // TorrentClient implements ITorrentClient var t1 = new Torrent(client); var t2 = new Torrent(client); 的一个实例,MyTorrentClientt1拥有对它的引用。