Ресурсы и память проекта DotNET, что происходит? - PullRequest
1 голос
/ 04 января 2010

Где я могу найти достоверную информацию о ресурсах и памяти проекта? Я хотел бы знать, когда ресурсы загружаются в память из DLL, когда они удаляются GC и т. Д.

Причина в том, что мое приложение содержит разделы справочных файлов в виде HTML-строк внутри исходного кода, и я собираюсь добавить возможность включать изображения. Меня не волнует, существенно ли вырастет размер моей dll, но мне все равно, существенно ли увеличивается объем памяти моего приложения.

Ответы [ 5 ]

2 голосов
/ 04 января 2010

Я не совсем уверен, работает ли .NET так же, как обычный Win32, но обычно он работает следующим образом:

Встроенные ресурсы (т.е. строки ресурсов) в DLL / EXE-файлах равны загружается в память, как только загружается библиотека / приложение.Однако, если ресурсы не используются в течение длительного времени, они могут быть выгружены / выгружены.Таким образом, вам на самом деле не нужно беспокоиться об исчерпании памяти.

Сказав это, HTML-справка - не такая уж хорошая вещь, которую можно запихнуть в программу.Если у вас их много, я бы посоветовал хранить их где-то вне приложения.Вот для чего нужны такие форматы, как CHM.

Обновление:

Исходя из вашего комментария, я думаю, вы, возможно, захотите взглянуть на спутниковые сборки .Это очень распространенный подход, когда вам необходимо хранить большое количество встроенных ресурсов, которые будут использоваться нечасто (или не использоваться вообще), то есть для локализации.Они по-прежнему являются скомпилированными сборками, которые, как мы надеемся, должны вписаться в вашу систему плагинов.

Каждый плагин будет фактически двумя сборками, одна из которых будет загружена вашим основным приложением, а другая объявлена ​​как ссылка внутри плагина.Все по-прежнему полностью автономно, но вы не загружаете сателлитную DLL, пока пользователь фактически не обратится за помощью.

1 голос
/ 04 января 2010

Похоже, вы ищете профилировщик памяти. Один из SciTech довольно хорош: .NET Memory Profiler. У них есть бесплатная двухнедельная пробная версия.

1 голос
/ 04 января 2010

Это приложение даст вам много (если не всю) этой информации, но ее трудно прочитать.

Есть несколько разных версий для разных версий .Net. Я полагаю, что я ссылаюсь на 3.5.

1 голос
/ 04 января 2010

Профилировщик памяти поможет вам с этой информацией. Я могу порекомендовать SciTech .Net Memory Profiler , но есть и другие варианты. См. ответы на этот вопрос , например.

1 голос
/ 04 января 2010

Взгляните на этот блог , в котором содержится отличная информация о методах устранения неполадок, а также посмотрите на сына забастовки, который более ориентирован на .net.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...