Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
05.12.2016, 20:59
|
|||
---|---|---|---|
Mono: Управление unmanaged ресурсами и Garbage collection |
|||
#18+
Итак, есть фреимворк. Писан на Перле. Решили потихоньку идти в торону шарпов, так как фирма геимдевная и шаринг логики на клиенте и на сервере - это хорошо. Чтобы не потерять все наработки скопом было решено попробовать следующее: На стороне Perl'а через механизм XS, подрубить mono, дать ей прожевать сборку и вызывать оттуда статические методы, отдавая на вход Perl'овые объекты, которые будут "транслироваться" через DynamicObject (он как-бы для такого и сделан). Все шло хорошор... Счетчики ссылок на стороне Perl'а отлично считались, объект отлично удалялся и т.д., только вот беда... Луп в 100000 вызовов падает с моновским стектрейсом и SIGSEGV. Анализ показала что причина... В сборщике мусора. Проблема: Perl однопотоковый (кто скажет что он многопоточный, тот никогда на Perl'е не писал нормально. Тут проще нафоркаться, чем треды нагенерить. Проблема в реализации). А вот Mono - нет. И на больших нагрузках сборщик приходит в другом потоке, что в результате приводит к одновременному увеличению и уменьшению счетчика ссылок и "досвидания". Код обертки на Шарпах: Код: 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. 25. 26. 27. 28.
Внимание - вопрос: Можно-ли как-то указать что объект должен "убираться" в потоке создания или вообще запретить многопоточность? Ну или предложите свои варианты решения этой проблемы. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
06.12.2016, 10:29
|
|||
---|---|---|---|
Mono: Управление unmanaged ресурсами и Garbage collection |
|||
#18+
Warstone, По крайней мере в реализации от МС, сборка мусора всегда в специальном потоке вне зависимости от нагрузки. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
06.12.2016, 11:41
|
|||
---|---|---|---|
|
|||
Mono: Управление unmanaged ресурсами и Garbage collection |
|||
#18+
А действительно необходима реализация финализатора? Его наличие создает доп. нагрузку на память в общем и GC в частности - увеличение памяти для списка финализации, перевод объектов с финализаторами по всему графу ссылок в старшие поколения, итп. Тот же IDisposable не устроит? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=20&mobile=1&tid=1400169]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
30ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 129ms |
0 / 0 |