Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Кушается память при отправке большой порции данных. [D5, WinXP]


Fredericco ©   (2003-10-15 19:10:00) 

TClientSocket/TServerSocket.
Проверяю просто: кидаю обоих на форму, коннекчу клиента к серверу. И делаю так
procedure TForm1.Button1Click(Sender: TObject);
var
tmp:string;
begin
tmp:=StringOfChar("A",12500000);
cs.Socket.SendBuf(Pointer(tmp)^,Length(tmp));
SetLength(tmp,0);
end;

В таймере проверяю свободную память так (интервал 500):
procedure TForm1.Timer1Timer(Sender: TObject);
var
si:TMemoryStatus;
f:Currency;
begin
GlobalMemoryStatus(si);
f:=Round(((si.dwAvailPhys/1024)/1024)*100)/100;
Caption:=FloatToStr(f)+" Mb ";
end;

При нажатии на буттон память уменьшается ~ на 12500000.
Может GlobalMemoryStatus в ХР не те цифирки выдает?
При повторных нажатиях память также уменьшается и на ту же величину.


Fredericco   (2003-10-17 14:00:00) [1]


> savva © (17.10.03 12:58) [4]

function send; external winsocket name "send";


Fredericco   (2003-10-17 13:47:00) [2]

2 Digitman © (17.10.03 13:26) [5]
Понял.


Digitman   (2003-10-17 13:26:00) [3]


> так ведь освабождать-то надо.


угу) ... если менеждер памяти будет действовать так как ты предполагаешь, любой умник за 6 секунд поставит систему раком, многократно запрашивая и тут же отдавая (с периодом в сотые доли секунды) блоки памяти размером в десятки-сотни мегабайт... а система при этом только и будет заниматься свопингом)


savva   (2003-10-17 12:58:00) [4]


> так ведь освабождать-то надо

а ты не задумывался почему в метод SendBuf параметр Buf передается как изменяемая переменная (var)?
Для подробностей смотри исходники метода SendBuf


Fredericco   (2003-10-16 16:43:00) [5]

Ну что бы не кушалось :-)
А почему это нормально?
Ладно мы память выделили Tmp, отправили так ведь освабождать-то надо.


Digitman   (2003-10-16 08:16:00) [6]


> При нажатии на буттон память уменьшается ~ на 12500000.


> При повторном нажатии память на месте


не вижу никаких ненормальностей в этом
а что иное ты ожидал увидеть ?


Fredericco   (2003-10-15 19:12:00) [7]

Немного наврал. При повторном нажатии память на месте.


Наверх

Титульная страница Поиск, карта сайта Написать письмо