Куда копируются сборки FCL?
От: Azix Азербайджан  
Дата: 07.12.05 08:25
Оценка:
Посмотрел на объем занимаемой .Net приложением памяти и был несколько удивлен такой прожорливостью — 14MB (минимальное приложение). Стало интересно, а как загружаются сборки, которые используются приложением? Т.е если, например запустить 2 копии приложения, каждая из них получит свою копию FCL сборок (System.Windows.Forms.dll, System.dll ...) или в памяти всего одна копия и она шарится между всеми .Net приложениями? Т.е реально ли приложение занимает 14МБ оперативки?
Буду очень признателен за ссылки, объясняющие данный вопрос.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re: Куда копируются сборки FCL?
От: Oyster КНДР  
Дата: 07.12.05 08:37
Оценка:
Здравствуйте, Azix, Вы писали:

A>Стало интересно, а как загружаются сборки, которые используются приложением? Т.е если, например запустить 2 копии приложения, каждая из них получит свою копию FCL сборок (System.Windows.Forms.dll, System.dll ...) или в памяти всего одна копия и она шарится между всеми .Net приложениями? Т.е реально ли приложение занимает 14МБ оперативки?


Эх, ссылку не дам, но можно выбрать стратегию использования сборок для хоста (их три, по-моему). Грубо говоря, несколько AppDomains, которые хостятся одним и тем же .NET хостом (в одном процессе) могут шарить между собой некоторые сборки; например, ASP.NET приложения в хосте IIS-а шарят между собой сборки со строгими именами (с нестрогими — нет).

Конечно, если приложения запускаются под разными хостами, ничего шариться не будет в любом случае.
Re[2]: Куда копируются сборки FCL?
От: Oyster КНДР  
Дата: 07.12.05 08:40
Оценка:
Здравствуйте, Oyster, Вы писали:

O>Эх, ссылку не дам...


Кое-что нашёл в итоге: Domain Neutral Assemblies
Re: Куда копируются сборки FCL?
От: TK Лес кывт.рф
Дата: 07.12.05 08:41
Оценка:
Hello, "Azix"
> Посмотрел на объем занимаемой .Net приложением памяти и был несколько
> удивлен такой прожорливостью — 14MB (минимальное приложение). Стало
> интересно, а как загружаются сборки, которые используются приложением? Т.е
> если, например запустить 2 копии приложения, каждая из них получит свою
> копию FCL сборок (System.Windows.Forms.dll, System.dll ...) или в памяти
> всего одна копия и она шарится между всеми .Net приложениями? Т.е реально
> ли приложение занимает 14МБ оперативки?
> Буду очень признателен за ссылки, объясняющие данный вопрос.

Все FCL сборки уже обработаны NGEN, лежат они в папке %Windows%\assembly
соответственно загрузка такой сборки по большому счету лишь отображение уже
существующего файла на память конкретного процесса.
Posted via RSDN NNTP Server 2.0
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Re[2]: Куда копируются сборки FCL?
От: Azix Азербайджан  
Дата: 07.12.05 08:53
Оценка:
Здравствуйте, TK, Вы писали:

TK>Все FCL сборки уже обработаны NGEN, лежат они в папке %Windows%\assembly

TK>соответственно загрузка такой сборки по большому счету лишь отображение уже
TK>существующего файла на память конкретного процесса.

Вот, например файл System.Windows.Forms.dll, он ведь не меняется и только один для .Net Framework данной версии. Неужели каждому прочессу, его использующему грузится отдельная копия в адресное пространство? Т.е я хочу четко понять — у каждого .Net приложения копия своя (в своем пространстве, т.е именно копия) или она "распологается" в его адресном пространстве, но для всех приложений ссылается на одни и теже области физической памяти?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[3]: Куда копируются сборки FCL?
От: Oyster КНДР  
Дата: 07.12.05 08:58
Оценка:
Здравствуйте, Azix, Вы писали:

A>Вот, например файл System.Windows.Forms.dll, он ведь не меняется и только один для .Net Framework данной версии. Неужели каждому прочессу, его использующему грузится отдельная копия в адресное пространство?


Да.

A>Т.е я хочу четко понять — у каждого .Net приложения копия своя (в своем пространстве, т.е именно копия) или она "распологается" в его адресном пространстве, но для всех приложений ссылается на одни и теже области физической памяти?


У каждого своя, если мы говорим о разных процессах.
Re[4]: Куда копируются сборки FCL?
От: Azix Азербайджан  
Дата: 07.12.05 09:31
Оценка:
Здравствуйте, Oyster, Вы писали:

O>Здравствуйте, Azix, Вы писали:


A>>Вот, например файл System.Windows.Forms.dll, он ведь не меняется и только один для .Net Framework данной версии. Неужели каждому прочессу, его использующему грузится отдельная копия в адресное пространство?


O>Да.


A>>Т.е я хочу четко понять — у каждого .Net приложения копия своя (в своем пространстве, т.е именно копия) или она "распологается" в его адресном пространстве, но для всех приложений ссылается на одни и теже области физической памяти?


O>У каждого своя, если мы говорим о разных процессах.


Жестоко.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[5]: Куда копируются сборки FCL?
От: TK Лес кывт.рф
Дата: 07.12.05 09:53
Оценка: 26 (4)
Здравствуйте, Azix, Вы писали:

A>>>Т.е я хочу четко понять — у каждого .Net приложения копия своя (в своем пространстве, т.е именно копия) или она "распологается" в его адресном пространстве, но для всех приложений ссылается на одни и теже области физической памяти?


O>>У каждого своя, если мы говорим о разных процессах.


A>Жестоко. :)


не настолько. если возможно, то она "распологается" в его адресном пространстве, но для всех приложений ссылается на одни и теже области физической памяти
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Re[6]: Куда копируются сборки FCL?
От: Azix Азербайджан  
Дата: 07.12.05 10:10
Оценка:
Здравствуйте, TK, Вы писали:

TK>не настолько. если возможно, то она "распологается" в его адресном пространстве, но для всех приложений ссылается на одни и теже области физической памяти


Т.е в физической памяти находится только одна копия сборки System.Windows.Forms.dll (к примеру), а для каждого процесса, она распологается в его адресном пространстве, но ссылается на эту самую расшаренную копию, так? Т.е System.Windows.Forms.dll занимает столько физической памяти, сколько занимает одна ее копия?
Я только не очень понял, что значит — "если возможно, то она "распологается"..."? А когда невозможно? И что тогда?
И есть ли какие-нибудь ссылки, а то у нас на работе базар по этому поводу — народ против .Net'а и приводят аргументы о расходе памяти.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[7]: Куда копируются сборки FCL?
От: Максим Зелинский  
Дата: 07.12.05 10:24
Оценка:
Здравствуйте, Azix, Вы писали:

A>Здравствуйте, TK, Вы писали:


TK>>не настолько. если возможно, то она "распологается" в его адресном пространстве, но для всех приложений ссылается на одни и теже области физической памяти


A>Т.е в физической памяти находится только одна копия сборки System.Windows.Forms.dll (к примеру), а для каждого процесса, она распологается в его адресном пространстве, но ссылается на эту самую расшаренную копию, так? Т.е System.Windows.Forms.dll занимает столько физической памяти, сколько занимает одна ее копия?

A>Я только не очень понял, что значит — "если возможно, то она "распологается"..."? А когда невозможно? И что тогда?
A>И есть ли какие-нибудь ссылки, а то у нас на работе базар по этому поводу — народ против .Net'а и приводят аргументы о расходе памяти.
Хех, если единственный аргумент против .net'а — расход памяти, то это самый "слабый" аргумент
Re[7]: Куда копируются сборки FCL?
От: TK Лес кывт.рф
Дата: 07.12.05 10:26
Оценка:
Hello, "Azix"
>
> Т.е в физической памяти находится только одна копия сборки
> System.Windows.Forms.dll (к примеру), а для каждого процесса, она
> распологается в его адресном пространстве, но ссылается на эту самую
> расшаренную копию, так? Т.е System.Windows.Forms.dll занимает столько
> физической памяти, сколько занимает одна ее копия?

Именно.

> Я только не очень понял, что значит — "если возможно, то она

> "распологается"..."? А когда невозможно? И что тогда?
> И есть ли какие-нибудь ссылки, а то у нас на работе базар по этому
> поводу — народ против .Net'а и приводят аргументы о расходе памяти.

здесь http://blogs.msdn.com/junfeng/archive/2004/08/05/208375.aspx описано
когда код может эффективно шариться а когда нет.
Posted via RSDN NNTP Server 2.0
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Re[8]: Куда копируются сборки FCL?
От: Oyster КНДР  
Дата: 07.12.05 10:30
Оценка:
Здравствуйте, TK, Вы писали:

TK>здесь http://blogs.msdn.com/junfeng/archive/2004/08/05/208375.aspx описано

TK>когда код может эффективно шариться а когда нет.

Я эту ссылку уже давал — там же вроде о разных AppDomains в пределах одного CLR хоста (одного процесса), а ты говорил о случае с несколькими процессами. Или я чего-то не понимаю?
Re[9]: Куда копируются сборки FCL?
От: TK Лес кывт.рф
Дата: 07.12.05 10:39
Оценка: 8 (1)
Здравствуйте, Oyster, Вы писали:

TK>>здесь http://blogs.msdn.com/junfeng/archive/2004/08/05/208375.aspx описано

TK>>когда код может эффективно шариться а когда нет.

O>Я эту ссылку уже давал — там же вроде о разных AppDomains в пределах одного CLR хоста (одного процесса), а ты говорил о случае с несколькими процессами. Или я чего-то не понимаю?


Там описывалось когда может использоваться NGEN образ а когда нет. Если NGEN образ сборки будет использоваться то, это будет одна dll для всех приложений.
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Re[8]: Куда копируются сборки FCL?
От: Azix Азербайджан  
Дата: 07.12.05 10:41
Оценка:
Здравствуйте, TK, Вы писали:

TK>здесь http://blogs.msdn.com/junfeng/archive/2004/08/05/208375.aspx описано

TK>когда код может эффективно шариться а когда нет.

Спасибо.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re: Куда копируются сборки FCL?
От: Azix Азербайджан  
Дата: 07.12.05 11:37
Оценка:
Вот открыл я сейчас ProcessExplorer и посмотрел на вкладку Performance для Janus.exe (rsdn@home):
Private bytes : 42MB
Working set: 44MB
Virtual memory: 563MB
CPU Time: 1:26 (1:30 для VS2003.Net, которая работает с 10-ти утра )
Так сколько же физической памяти занимает к примеру эта програма (rsdn@home)?
Количество загруженных dll программой просто пугает. Посмотрев на столбец Image Base, я обнаружил что сборки распологаются в первых 2-х гигабайтах адресного пространства процесса. Разве это не означает, что они уникальны (т.е являются копиями) для данного процесса?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[2]: Куда копируются сборки FCL?
От: TK Лес кывт.рф
Дата: 07.12.05 12:56
Оценка:
Hello, "Azix"

> Количество загруженных dll программой просто пугает. Посмотрев на

> столбец Image Base, я обнаружил что сборки распологаются в первых 2-х
> гигабайтах адресного пространства процесса. Разве это не означает, что они
> уникальны (т.е являются копиями) для данного процесса?

Надо обращать внимание на то, сколько из этих dll были перемещены в процессе
загрузки. То, что *.dll загружаются в первые 2 гигабайта это нормально.
Posted via RSDN NNTP Server 2.0
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.