|
А теперь взрослый вопрос. Утечка памяти в ремотинге
|
|||
---|---|---|---|
#18+
Привет всем! вот такая недетская задачка. создаю форму, вызываю ремотинговый объект, вызываю метод ейный и получаю в ответ датасет. закрываю форму, проверяю кучу: GC.GetTotalMemory(true). с каждым вызовом куча растет и не уменьшается. память в процессе который содержит ремотинговый объект вроде в порядке. что тут может быть? никаких объектов ссылающихся на ремотинговый объект или датасет я не нашел.... ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2003, 12:02 |
|
А теперь взрослый вопрос. Утечка памяти в ремотинге
|
|||
---|---|---|---|
#18+
Может это от формы что то остается ? Делаешь Dispose после закрытия формы ? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2003, 12:27 |
|
А теперь взрослый вопрос. Утечка памяти в ремотинге
|
|||
---|---|---|---|
#18+
О Кузя :) с тобой мы это точно решим... вот рез-ты последних исследований. если не делать байндинг то форма выгружается нормально (или почти нормально - разница где то 1К все же есть). если делать байндинг: Код: plaintext 1. 2. 3. 4. 5. 6. 7.
то идет утечка. я в шоке так как ты наверное уже понял что я в этих байндинговых классах не волоку ни черта (я раньше только вебформы если честно делал) п.с. байндинг я для теста делаю только к текстбоксам (правда они инфраджистик). щас попробую к стандартным прибайнидить. и убрать ТабсКонтрол... ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2003, 12:44 |
|
А теперь взрослый вопрос. Утечка памяти в ремотинге
|
|||
---|---|---|---|
#18+
попробуй все-таки, чтобы вызывался Dispose -> он гарантированно должен убить всё внутри формы вместе со всеми bindig'ами Код: plaintext 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2003, 13:20 |
|
А теперь взрослый вопрос. Утечка памяти в ремотинге
|
|||
---|---|---|---|
#18+
дело вобщем не в ремотинге и не в байндинге. переделал: Код: plaintext 1. 2. 3. 4. 5.
теряется 100К при первом запуске. но потом не растет куча. так что почти победа. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2003, 13:25 |
|
А теперь взрослый вопрос. Утечка памяти в ремотинге
|
|||
---|---|---|---|
#18+
нашел самую суть проблемы но объяснить не могу совсем. у меня было Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
и утечки нет. странно как то. CorpObject - типизированный датасет и CorpSalesRow - обычная DataRow и сама SalesRow не создавалась а присваивалась ссылка и SalesRow уничтожаться должна была после закрытия формы... странно.. надо бы разобраться ибо на такие грабли можно всегда нарываться если не понимать суть происходящего. я же пока не понимаю в чем проблема. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2003, 13:30 |
|
А теперь взрослый вопрос. Утечка памяти в ремотинге
|
|||
---|---|---|---|
#18+
чушь. последнее не читать. глюкнул я что то.. все таки проблема в байндинге где то.. если сделать : Код: plaintext 1.
т.е. row присваиваится но не используется. то утечки нет. если сделать хоть один байндинг от row. например Код: plaintext
то происходит утечка. т.е. какой то объект вне формы остается удерживать именно ссылку на данные на которые ссылался SalesRow внутри формы. т.к. даже SalesRow = null ничего не меняет. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2003, 13:52 |
|
А теперь взрослый вопрос. Утечка памяти в ремотинге
|
|||
---|---|---|---|
#18+
Кстати Кузя - а диспоз чего можно делать после закрытия формы? может я чего то с этой мэнэджед сборкой мусора не понимаю? если форма закрылась там диспоз уже сделан и приватные переменные должны быть сами уничтожены. или что? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2003, 13:54 |
|
А теперь взрослый вопрос. Утечка памяти в ремотинге
|
|||
---|---|---|---|
#18+
По моему раз GC запускается при определенных условиях (памяти стало мало или чего еще там, не помню), то вы не можете гарантировать, что сборка мусора происходит сразу после закрытия формы. Также этого не гарантирует вызов Dispose (IMHO). Так что, вполне вероятно, у вас просто хватает памяти, поэтому ее и не освобождает GC. Попробуйте явно вызвать сборку мусора, а потом уже мерить GC.GetTotalMemory(true) ЗЫ: все вышенаписанное может быть полным бредом, но все-же попробуйте :)) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2003, 14:27 |
|
А теперь взрослый вопрос. Утечка памяти в ремотинге
|
|||
---|---|---|---|
#18+
разница в твоих вариантах: в первом случае bindig управляется через CurrencyManager, а во втором - через PropertyManager. оба являются наследниками от одного и того же BindingManagerBase. в первом случае типизация не не используется и работа идет через базовый класс DataTable. во втором - через типизированный DataRow. но почему такое разное поведение ??? попробуй принудительно убить Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2003, 15:12 |
|
А теперь взрослый вопрос. Утечка памяти в ремотинге
|
|||
---|---|---|---|
#18+
Кузя! ты гений :) так я с тобой выучу всю библиотеку классов. работает таки :) правда у меня там контролов до хрена ( в это форме только ок 60 а в других и больще ста будет). там нет возможности как то всю фигню разом очистить? и интересно почему оно само не диспозится? это где то описано? это глюк или я неправильно понимаю эту балалайку? супер спасибо :) кстати - а че ты на письмо не ответил? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2003, 18:12 |
|
|
start [/forum/search_topic.php?author=Svetikova&author_mode=last_posts&do_search=1]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
162ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
61ms |
get tp. blocked users: |
2ms |
others: | 441ms |
total: | 740ms |
0 / 0 |