Добрый вечер. В контексте моего вопроса и Вашего опыта и просто фантастического скила - подскажите, как происходит резервирование памяти для объектов? Допусти я очистил сущность без удаления, то есть ее содержание равно нулю, но сколько сама она резервирует как сущность?
Даже не так задал вопрос - сколько сама сущность как пустой объект занимает памяти и сколько она резервирует в рамках проекта под себя
Это Вы преувеличиваете - я такой же новичок, как и множество на этом форуме.
Обсуждение по-поводу того, как выделяется память для объектов - я пробовал затрагивать
здесь.
В целом, я как и Вы пришел к выводу, что чем больше порождается объектов - тем больше в дальнейшем проблем с производительностью.
Начал читать книжки... И не помню уже в какой прочитал, что для многопотока важно, чтобы созданные пустые объекты ссылались на одну и ту же область в памяти (что собственно я и показал в теме, на которую ссылаюсь). К сожалению, под руками не сохранилось где именно я это прочитал, чтобы ссылаться на первоисточник.
Что касается списков Зенно, что они имеют под капотом, в какой момент пытаются синхронизироваться с файлами, в какой момент происходит проверка подключен ли файл к списку (или это производится только один раз) и какие ещё дополнительные штуки происходят под капотом (которые могут использовать какие-то ресурсы ) - я не знаю
Для своих задач я знаю одно - что созданная сущность хранится в памяти пока находится в области видимости (от открывающей { до закрывающей фигурной скобки }). Из-за чего для временных списков, с которыми мне приходится работать в Зенно - я использую что-то вроде такого:
List<string> list = Enumerable.Empty<string>().ToList();
И когда этот объект нужно передать между кубиками - тогда использую контекст, как например писал
volody00:
project.Context["list"] = list.ToList<string>();
А в кубике, который должен использовать list:
List<string> list = (List<string>) project.Context["list"];
В этом случае, чтобы удалить старый объект полностью - мне достаточно:
project.Context["list"] = Enumerable.Empty<string>().ToList();
.... но сколько сама она резервирует как сущность?
Можно
сериализовать объект, и посмотреть его размер.
Пример:
long size = 0;
object obj = new object();
using (Stream stream = new MemoryStream()) {
BinaryFormatter formatter = new BinaryFormatter();
formatter.Serialize(stream, obj);
size = stream.Length;
}