|
AppDomain.Unload
|
|||
---|---|---|---|
#18+
добрый день. Есть сервис, при вызове создается домен, загружаются из BD необходимые сборки (это было нужно из-за поддержки версий, т.е. в одном случае одна версия в другом другая). Домен сохраняется в некий пул вида Код: c# 1.
, пул инициализируется вот таким образом: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24.
При необходимости выгрузить домен, его имя бросается в очередь Код: c# 1.
, где он должен выгрузиться Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
Проблема с раходом памяти, т.к. в итоге все падает когда выело всю память. Т.е. код для выгрузки вызывается, но толку от этого ни какого. То-ли GC не успевает отработать, то ли он вообще не выгрузился..... Есть какая идея - куда копать? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2014, 16:49 |
|
AppDomain.Unload
|
|||
---|---|---|---|
#18+
да, сам метод выгрузки: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Имя домена задается как Guid, посему и парсится им-же. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2014, 17:00 |
|
AppDomain.Unload
|
|||
---|---|---|---|
#18+
Badabum, копать в сторону профилировщика. Профайлер покажет, где именно растёт память. Queue<string> - это наверняка System.Collections.Generic? Тогда ахтунг... Непотокобезопасная очередь используется в разных потоках. Также нутром чую, что workExists не volatile. Ну и вместо Thread.Sleep лучше применить какой-нибудь примитив синхронизации. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2014, 17:14 |
|
AppDomain.Unload
|
|||
---|---|---|---|
#18+
Мдя.. ищу чем можно смотреть... По поводу workExists - точно так, поправлю... А вот чем Queue не подходит - доступ к нему залочен локом: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
А дальше вся работа в методе Код: c# 1.
. Queue содержит имена доменов, которые нужно выгрузить. Какие могут быть грабли? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2014, 17:29 |
|
|
start [/forum/topic.php?fid=20&gotonew=1&tid=1402975]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
45ms |
get topic data: |
9ms |
get first new msg: |
6ms |
get forum data: |
2ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 143ms |
0 / 0 |