Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/12: Рейтинг темы: голосов - 12, средняя оценка - 4.75
0 / 0 / 1
Регистрация: 01.10.2009
Сообщений: 21
1

Memory leak

12.11.2009, 15:47. Показов 2432. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, коллеги.
В программе наблюдается утечка памяти. Наблюдается совершенно четко - пользовал CLR Profiler и PerfMon. Код не мой. Утечку надо найти мне, с данным родом проблемы столкнулся впервые. Про организацию работы GC почитал. Вопрос: каким образом я могу локализовать место утечки? Неужели это возможно, лишь "вручную" перелопатив чужой код?
ЗЫ: из данных, полученных с помощью профайлеров: большое количество объектов скапливается в gen2.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.11.2009, 15:47
Ответы с готовыми решениями:

Memory Stream
есть такой код string s = "что-небудь"; MemoryStream ms = new MemoryStream(); ...

Считать Touch Memory
Привет всем. Нашел считыватель ключей iButton RDS-01 USB (см на картинке его вид). А почему бы не...

Игровая программа “Memory”
В общем, на форме расположено изображение, закрытое 16-ю элементами. По щелчку игрока элемент...

Out of memory при парсинге с webBrowser
Друзья, посоветуйте почему выдает out of memory??? Есть множество ссылок на гугл.финанс с которых...

4
0 / 0 / 0
Регистрация: 17.01.2017
Сообщений: 4
12.11.2009, 16:30 2
Цитата Сообщение от MadeInUSSR Посмотреть сообщение
...В программе наблюдается утечка памяти. Наблюдается совершенно четко ... Код не мой. Утечку надо найти мне, с д.
Похоже у меня сходная проблема
У себя подозреваю инициализацию переменных в Thread
Сейчас решаю другую задачу, а утечку буду ловить завтра.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
private Thread ThreadReceive;
private byte[] dataToDecode = new byte[4096];
...
ThreadReceive = new Thread(Receive);
...
public void Receive()
{
    byte[] data;
 
    while (true)
    {
          ...
          data = UDPClient.Receive(ref RemoteIpEndPoint);
          dataToDecode = data;
          ...
          DataDecode(this, EventArgs.Empty);
          ...
    }
}
0
0 / 0 / 1
Регистрация: 01.10.2009
Сообщений: 21
12.11.2009, 17:24  [ТС] 3
А когда у вас цикл завершается?
0
0 / 0 / 0
Регистрация: 17.01.2017
Сообщений: 4
12.11.2009, 18:16 4
C#
1
while (true)
Для упрощения примера.

На самом деле код сложнее.
Используется 2 флага
C#
1
2
3
4
5
6
7
8
9
10
11
private bool process = true;  // сбрасывается внешним потоком для остановки этого потока
private bool processend = true;  // используется для контроля завершения этого потока
...
public void Receive()
{
    while (process)
    {
      ...
    }
    processend = false;
}
И остановка процесса трех этапная - это связано с особенностями реализации DataDecode.
processend пришлось добавить из-за того же.

Но к утечке памяти это уже дела не имеет.
0
4337 / 1506 / 101
Регистрация: 12.04.2009
Сообщений: 2,342
12.11.2009, 18:26 5
а если вручную вызывать GC?
0
12.11.2009, 18:26
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.11.2009, 18:26
Помогаю со студенческими работами здесь

Solution’s time and memory complexity
У меня есть такое задание: 2. What is your solution’s time and memory complexity? (Big O...

Out of memory при создании документа Word
Добрый день. Есть простейшая программка, запускающая ms word. using System; using...

Web api, out of memory
Добрый день. Имеется вот такой код public class FileHelper { public static string...

Memory Mapped Files
Никак не могу разобраться как работает класс Memory Mapped Files, этот класс загружает файлы в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru