Форум: "Сети";
Текущий архив: 2003.12.12;
Скачать: [xml.tar.bz2];
ВнизКушается память при отправке большой порции данных. Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.008 c