Я создаю приложение формы Windows на C#, которое читает из сотен файлов и создает иерархию объектов. В частности:У меня серьезная проблема с утечкой памяти?
DEBUG[14]: Imported 129 system/s, 6450 query/s, 6284293 document/s.
Сумма - это общее количество объектов, которые я создал. Между прочим, объекты действительно простые, только некоторые свойства int/string и строго типизированные списки внутри.
Вопрос: нормально, что мое приложение потребляет около 700 МБ памяти (в режиме отладки)? Что я могу сделать для сокращения использования памяти?
EDIT: вот почему у меня есть 6284293 объектов, если вам просто интересно. Представьте себе поисковую систему под названием «система». В системе есть больше запросов.
public class System
{
public List<Query> Queries;
}
Каждый объект запроса относится к «теме»; это главный аргумент (например, поиск «италийских выходных»). Это га список извлеченного документа внутри:
public class Query
{
public Topic Topic; // Maintain only a reference to the topic
public List<RetrievedDocument> RetrievedDocuments;
public System System; // Maintain only a reference to the system
}
Каждый извлекаться документ имеет счет и ранг и имеет ссылку на тему документа:
public class RetrievedDocument
{
public string Id;
public int Rank;
public double Score;
public Document Document;
}
Каждая тема имеет набор документов внутри, которые могут быть важными или нет, и ссылки на его родительскую тему:
public class Topic
{
public int Id;
public List<Document> Documents;
public List<Document> RelevantDocuments
{
get {return Documents.Where(d => d.IsRelevant());}
}
}
public class Document
{
public string Id;
public bool IsRelevant;
public Topic Topic; // Maintain only a reference to the topic
}
есть 129 системы, 50 основные тем (129 * 50 = 6450 объектов запроса), каждый запрос имеет диф количество полученных документов, всего 6284293. Мне нужна эта иерархия для выполнения некоторых вычислений (средняя точность, облегчение темы, средняя средняя точность системы, релевантность). Вот как работает TREC ...
Звучит довольно разумно, разумно. – AHungerArtist 2010-12-01 18:24:58
Имеет ли `6284293 документов 'означает, что у вас есть 6284293 объектов? – Gabe 2010-12-01 18:25:29
@Gabe: да, это число - это общие строки всех импортированных файлов (~ 130 txt-файлов), и для каждой строки создается объект типа «Документ» ... – gremo 2010-12-01 19:02:30