wininet & memory leak
От: Сергей Савостин Украина http://savostin.com
Дата: 17.08.05 12:41
Оценка: :)
Неужели я первый сталкиваюсь с этим?
Есть код, который запускается раз в секунду:

HINTERNET hInternetSession = InternetOpen(
                  "Microsoft Internet Explorer",
                  INTERNET_OPEN_TYPE_PROXY,
                  NULL, NULL, 0);
HINTERNET hRequest = InternetOpenUrl(
         hInternetSession,
         "http://127.0.0.1/",
         NULL, 0, 0, 0);
InternetCloseHandle(hRequest);
InternetCloseHandle(hInternetSession);


Собсно и все. Даже полученные данные не парсим...
Так вот эта штуччка жрет 1-2к памяти на каждый запрос.
ЗЫ. Это упрощенная версия. В оригинале там через InternetConnect + HttpOpenRequest + HttpSendRequest ибо https и POST, но кушает именно это — проверено опытным путем.
Буду благодарен за мысли/ссылки.
Re: wininet & memory leak
От: madsoper  
Дата: 17.08.05 14:10
Оценка:
Здравствуйте, Сергей Савостин, Вы писали:

СС>Неужели я первый сталкиваюсь с этим?

СС>Есть код, который запускается раз в секунду:

СС>
СС>HINTERNET hInternetSession = InternetOpen(
СС>                  "Microsoft Internet Explorer",
СС>                  INTERNET_OPEN_TYPE_PROXY,
СС>                  NULL, NULL, 0);
СС>HINTERNET hRequest = InternetOpenUrl(
СС>         hInternetSession,
СС>         "http://127.0.0.1/",
СС>         NULL, 0, 0, 0);
СС>InternetCloseHandle(hRequest);
СС>InternetCloseHandle(hInternetSession);
СС>


СС>Собсно и все. Даже полученные данные не парсим...

СС>Так вот эта штуччка жрет 1-2к памяти на каждый запрос.
СС>ЗЫ. Это упрощенная версия. В оригинале там через InternetConnect + HttpOpenRequest + HttpSendRequest ибо https и POST, но кушает именно это — проверено опытным путем.
СС>Буду благодарен за мысли/ссылки.

может есть смысл не открывать\закрывать сессию каждый раз, а сделать это один раз?
... << RSDN@Home 1.1.4 beta 5 rev. 395>>
Re[2]: wininet & memory leak
От: Сергей Савостин Украина http://savostin.com
Дата: 17.08.05 14:16
Оценка:
M>может есть смысл не открывать\закрывать сессию каждый раз, а сделать это один раз?

да как показал опыт, жрет именно в
HINTERNET hRequest = InternetOpenUrl(
         hInternetSession,
         "http://127.0.0.1/",
         NULL, 0, 0, 0);

даже могу точнее сказать — вот тут:

HttpSendRequest(hRequest, NULL,0, NULL,0);


как это ни странно....
Re: wininet & memory leak
От: madsoper  
Дата: 18.08.05 09:31
Оценка:
Здравствуйте, Сергей Савостин, Вы писали:

СС>Неужели я первый сталкиваюсь с этим?

СС>Есть код, который запускается раз в секунду:

СС>
СС>HINTERNET hInternetSession = InternetOpen(
СС>                  "Microsoft Internet Explorer",
СС>                  INTERNET_OPEN_TYPE_PROXY,
СС>                  NULL, NULL, 0);
СС>HINTERNET hRequest = InternetOpenUrl(
СС>         hInternetSession,
СС>         "http://127.0.0.1/",
СС>         NULL, 0, 0, 0);
СС>InternetCloseHandle(hRequest);
СС>InternetCloseHandle(hInternetSession);
СС>


СС>Собсно и все. Даже полученные данные не парсим...

СС>Так вот эта штуччка жрет 1-2к памяти на каждый запрос.
СС>ЗЫ. Это упрощенная версия. В оригинале там через InternetConnect + HttpOpenRequest + HttpSendRequest ибо https и POST, но кушает именно это — проверено опытным путем.
СС>Буду благодарен за мысли/ссылки.

может есть смысл не открывать\закрывать сессию каждый раз, а сделать это один раз?
... << RSDN@Home 1.1.4 beta 5 rev. 395>>
Re: wininet & memory leak
От: quirrc  
Дата: 18.08.05 11:44
Оценка:
я бы проверил, действительно ли это утечка, т.е. не 1кб на вызов, а 1М на 1000 вызовов, а также происходит ли это в другой системе и с другим видом подключения (например, не через прокси) и если менять параметры с NULL на что-то другое.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.