Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.12.12;
Скачать: CL | DM;

Вниз

Кушается память при отправке большой порции данных.   Найти похожие ветки 

 
Fredericco ©   (2003-10-15 19:10) [0]

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-15 19:12) [1]

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


 
Digitman ©   (2003-10-16 08:16) [2]


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


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


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


 
Fredericco ©   (2003-10-16 16:43) [3]

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


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


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

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


 
Digitman ©   (2003-10-17 13:26) [5]


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


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


 
Fredericco ©   (2003-10-17 13:47) [6]

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


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


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

function send; external winsocket name "send";



Страницы: 1 вся ветка

Текущий архив: 2003.12.12;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.012 c
6-36795
MacX
2003-10-11 15:03
2003.12.12
Хеш по сети


1-36710
timM
2003-12-03 12:34
2003.12.12
fsMDIForm и Dll


1-36676
ИМХО
2003-12-03 06:48
2003.12.12
TListView - выделить строку жирным цветом


1-36663
Igit
2003-11-27 10:17
2003.12.12
Как сохранить IStream в файл?


1-36661
romeo
2003-11-30 17:38
2003.12.12
Печать на принтер и превью в Win98 - какие-то странные глюки.