AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Habe einen Speicherfresser, weis aber nicht wo :(
Thema durchsuchen
Ansicht
Themen-Optionen

Habe einen Speicherfresser, weis aber nicht wo :(

Ein Thema von Jackie1983 · begonnen am 6. Nov 2009 · letzter Beitrag vom 6. Nov 2009
 
Jackie1983

Registriert seit: 12. Mär 2007
486 Beiträge
 
#1

Habe einen Speicherfresser, weis aber nicht wo :(

  Alt 6. Nov 2009, 15:42
Servus,

vielleicht könnt ihr mir ja weiterhelfen. Wenn ich mein Programm übernacht laufen lasse, wird die Speicherauslastung immer mehr. Irgend wann leidet auch das System darunter.

Die Anwendung ist eine Client / Server Anwendung. Es wird als Test Daten vom Client zum Server gesendet. Als erstes wird ein Ping gesendet wenn ein Pong vom Server kommt werden alle Daten gesendet.

Wenn die Anwendung offline ist, ist soweit alles ok, nur wenn der Client verbunden ist, wird speicher verschlungen.
Also denke ich das der "Fehler" im read vom Client ist.

Hier ein wenig code.

Senden daten vom Client zum Server
Delphi-Quellcode:
procedure TThreadClient.Send(var Cmd: TCommandHandling; FreeCmd: Boolean);
var
  ping : TCommandHandling;
begin
  fSendCS.Enter;
  try
    if cmd <> nil then
      fJobsBuffer := fJobsBuffer + cmd.SendFrames;
  finally
    fSendCS.Leave;
  end;

  //Jobs zum server senden
  if (fSocketClient.Active) and (cmd <> nil) then
  begin
    if fJobsBuffer <> 'then
    begin
      //Erst mit einem Ping testen ob Verbindung besteht.
      LogMessage('OUT Ping');
      Ping := TCommandHandling.Create(SYS_PING);
      try
        fSocketClient.Socket.SendBuf(PChar(ping.SendFrames)^,Length(ping.SendFrames));
      finally
        FreeAndNil(ping);
      end;
    end;
  end;

  //Freigeben
  if FreeCmd then
    FreeAndNil(cmd);
end;
Daten vom Server lesen
Delphi-Quellcode:
procedure TThreadClient.OnClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
var
  sBuffer,sJob : string;
  cmd,cmdRes : TCommandHandling;
  cmdSize : integer;
begin
  SetLength(sBuffer,Socket.ReceiveLength);
  Socket.ReceiveBuf(PChar(sBuffer)^,Length(sBuffer));

  FTempBuffer := FTempBuffer + sBuffer;
  SetLength(sBuffer, 0);

  while FTempBuffer <> 'do
  begin
    cmdSize := PCardinal(@FTempBuffer[1])^;
    if length(FTempBuffer) < cmdSize then break;

    sJob := copy(FTempBuffer,1,cmdSize);
    Delete(FTempBuffer,1,cmdSize);

    cmd := TCommandHandling.Create(CMDNone);
    cmd.SetFrames(sJob);
    case cmd.GetCmd of
      SYS_ALIVE : begin
        LogMessage('IN Alive');
        cmdRes := TCommandHandling.Create(SYS_ALIVE);
        try
          Socket.SendBuf(PChar(cmdRes.SendFrames)^,Length(cmdRes.SendFrames));
        finally
          FreeAndNil(cmdRes);
        end;
      end;
      SYS_PONG : begin
        fSendCS.Enter;
        try
          LogMessage('IN Pong');
          FPong := true;

          //Daten sende neu
          fSocketClient.Socket.SendBuf(PChar(fJobsBuffer)^,Length(fJobsBuffer));
          LogMessage('Job zum Server');
          LogMessage('OUT '+Dump(fJobsBuffer));
          fJobsBuffer := '';
          SetLength(fJobsBuffer, 0);
        finally
          fSendCS.Leave;
        end;
        //-----------------------------
      end;
    else if sJob <> 'then
      fJobCS.Enter;
      try
        fJobList.AddObject(sjob, socket);
      finally
        fJobCS.Leave;
      end;
      LogMessage('IN JOB: '+Dump(sJob));
    end; //case
    FreeAndNil(cmd);
  end; //while
end;
Ich bin der Meinung ich habe alles freigegeben.
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:04 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz