Delphi-PRAXiS
Seite 6 von 7   « Erste     456 7      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Memory leak durch funktion readln (https://www.delphipraxis.net/184250-memory-leak-durch-funktion-readln.html)

p80286 13. Mär 2015 10:18

AW: Memory leak durch funktion readln
 
Zitat:

Zitat von danieldelphi (Beitrag 1293332)
Also das exit und die autodatei sind nicht das problem, da in dem code den ich zuanfang gepostet habe beides nicht vorhanden ist aber das problem trotzdem auftritt.

ich hab mir mal Dein erstes Posting geschnappt und mal laufen lassen:
Delphi-Quellcode:
procedure sterb_schleife;
var
  quell_dat, grossdatei: text;
  quelldatname : string;
  zeile : string;
  zaehler_gesamt : integer;
begin
  assign(grossdatei, 'c:\temp\'+ 'big.txt');
  rewrite(grossdatei);
  quelldatname := 'test.TXT';
  assign(quell_dat, 'c:\temp\' + quelldatname);
  reset(quell_dat);
  while not eof(quell_dat){zaehler_gesamt<1200000} do
  begin
    readln(quell_dat, zeile);
    Writeln(grossdatei, zeile);
    inc(zaehler_gesamt);
    (*
      if ((zaehler_gesamt mod 1000) = 0) then
           dsnr.strings[1] := inttostr(zaehler_gesamt);
      *)
  end;
  flush(quell_dat);
  close(quell_dat);
  flush(grossdatei);
  close(grossdatei);

end;
Abgesehen von der nicht umwerfenden Geschwindigkeit, gibt es da keine Probleme! Wenn Du Probleme hast, dann ist die Frage wie kommst Du überhaupt darauf?

Zitat:

Zitat von danieldelphi (Beitrag 1293341)
Ich misch mich grade nochmal in eure Diskussion ein, also ich ahbe mittlerweile rausgefunden, dass der Arbeitsspeicher scheinbar nicht von meinem Delphi tool blockiert wird, sondern von etwas anderem, also kann es ja nur die Datei verwaltung oder windows sein ioder?
dagegen kann man nix machenn oder?

Was heißt "Arbeitsspeicher wird blockiert"?


Gruß
K-H

danieldelphi 13. Mär 2015 10:26

AW: Memory leak durch funktion readln
 
Zitat:

Zitat von p80286 (Beitrag 1293345)
Zitat:

Zitat von danieldelphi (Beitrag 1293332)
Also das exit und die autodatei sind nicht das problem, da in dem code den ich zuanfang gepostet habe beides nicht vorhanden ist aber das problem trotzdem auftritt.

ich hab mir mal Dein erstes Posting geschnappt und mal laufen lassen:
Delphi-Quellcode:
procedure sterb_schleife;
var
  quell_dat, grossdatei: text;
  quelldatname : string;
  zeile : string;
  zaehler_gesamt : integer;
begin
  assign(grossdatei, 'c:\temp\'+ 'big.txt');
  rewrite(grossdatei);
  quelldatname := 'test.TXT';
  assign(quell_dat, 'c:\temp\' + quelldatname);
  reset(quell_dat);
  while not eof(quell_dat){zaehler_gesamt<1200000} do
  begin
    readln(quell_dat, zeile);
    Writeln(grossdatei, zeile);
    inc(zaehler_gesamt);
    (*
      if ((zaehler_gesamt mod 1000) = 0) then
           dsnr.strings[1] := inttostr(zaehler_gesamt);
      *)
  end;
  flush(quell_dat);
  close(quell_dat);
  flush(grossdatei);
  close(grossdatei);

end;
Abgesehen von der nicht umwerfenden Geschwindigkeit, gibt es da keine Probleme! Wenn Du Probleme hast, dann ist die Frage wie kommst Du überhaupt darauf?

Zitat:

Zitat von danieldelphi (Beitrag 1293341)
Ich misch mich grade nochmal in eure Diskussion ein, also ich ahbe mittlerweile rausgefunden, dass der Arbeitsspeicher scheinbar nicht von meinem Delphi tool blockiert wird, sondern von etwas anderem, also kann es ja nur die Datei verwaltung oder windows sein ioder?
dagegen kann man nix machenn oder?

Was heißt "Arbeitsspeicher wird blockiert"?


Gruß
K-H

danke dass du nochmal rein geschaut hast, also wenn ich das tool laufen lasse, die input datei ist 300 mb groß,
dann "läuft der arbeitsspeicher voll, also das sehe ich daran, dass der grüne balken im ressourcen monitor unter memory der für in use steht immer weiter anwächst.

Mavarik 13. Mär 2015 11:04

AW: Memory leak durch funktion readln
 
Zitat:

Zitat von danieldelphi (Beitrag 1293347)
dann "läuft der arbeitsspeicher voll, also das sehe ich daran, dass der grüne balken im ressourcen monitor unter memory der für in use steht immer weiter anwächst.

?? Ist das nicht "nur" Windows Memory use? Oder ist das Application bezogen?

Ist der Speicher wieder frei nach dem Close und ein bisschen Wartezeit?

Mavarik

Der schöne Günther 13. Mär 2015 11:26

AW: Memory leak durch funktion readln
 
Du kannst seine Sterb_schleife 10 mal hintereinander ausführen und der Speicherbedarf ist nach der Ausführung nicht gestiegen. Insofern ist die Bezeichnung "Leak" irreführend.

Es geht nur um den immer weiter steigenden Speicherbedarf innerhalb der Schleife.

danieldelphi 13. Mär 2015 11:27

AW: Memory leak durch funktion readln
 
Zitat:

Zitat von Mavarik (Beitrag 1293348)
Zitat:

Zitat von danieldelphi (Beitrag 1293347)
dann "läuft der arbeitsspeicher voll, also das sehe ich daran, dass der grüne balken im ressourcen monitor unter memory der für in use steht immer weiter anwächst.

?? Ist das nicht "nur" Windows Memory use? Oder ist das Application bezogen?

Ist der Speicher wieder frei nach dem Close und ein bisschen Wartezeit?

Mavarik

Ja der Speicher ist dann wieder frei. aber application bezogen kann ich leide rnicht sagen:/

danieldelphi 13. Mär 2015 11:28

AW: Memory leak durch funktion readln
 
Zitat:

Zitat von Der schöne Günther (Beitrag 1293351)
Du kannst seine Sterb_schleife 10 mal hintereinander ausführen und der Speicherbedarf ist nach der Ausführung nicht gestiegen. Insofern ist die Bezeichnung "Leak" irreführend.

Es geht nur um den immer weiter steigenden Speicherbedarf innerhalb der Schleife.

Ja okay, also heißt, dass das mein tool okay ist aber iwas anderes nicht stimmt?

Mavarik 13. Mär 2015 11:34

AW: Memory leak durch funktion readln
 
Zitat:

Zitat von danieldelphi (Beitrag 1293353)
Ja okay, also heißt, dass das mein tool okay ist aber iwas anderes nicht stimmt?

Ich würde eher sagen: Lass Windows seinen Speicher so verwalten wie Windows das will...

Oder sagt Reportmemoryleaksonshutdown etwas anderes?

Der schöne Günther 13. Mär 2015 11:40

AW: Memory leak durch funktion readln
 
Ich glaube eher dass es, egal ob ReadLn, TStreamReader oder sonst was, es nicht am Code, sondern an den Daten liegt. Ich habe bei meiner "steigt immer weiter an"-Aussage vergessen zu erwähnen dass ich das mit einer Testdatei mit einer 300MB langen Zeile versucht habe. Wenn man ein paar Millionen kleine Zeilen untereinander macht ist die sterb_schleife auch vollkommen ok und steigt kein KB im Speicherbedarf.

Oder hast du ein paar Zeilen um eine Testdatei zu erzeugen wie sie bei dir normalerweise aussehen?

danieldelphi 13. Mär 2015 11:47

AW: Memory leak durch funktion readln
 
Zitat:

Zitat von Der schöne Günther (Beitrag 1293356)
Ich glaube eher dass es, egal ob ReadLn, TStreamReader oder sonst was, es nicht am Code, sondern an den Daten liegt. Ich habe bei meiner "steigt immer weiter an"-Aussage vergessen zu erwähnen dass ich das mit einer Testdatei mit einer 300MB langen Zeile versucht habe. Wenn man ein paar Millionen kleine Zeilen untereinander macht ist die sterb_schleife auch vollkommen ok und steigt kein KB im Speicherbedarf.

Oder hast du ein paar Zeilen um eine Testdatei zu erzeugen wie sie bei dir normalerweise aussehen?

Also ich habe zwischen 2 und 4 millionen zeilen mit ca 350 zeichen.
aber gute idee das mal zu testzwecken mit anderer zeilen länge zu versuchen

danieldelphi 13. Mär 2015 11:48

AW: Memory leak durch funktion readln
 
Zitat:

Zitat von Mavarik (Beitrag 1293354)
Zitat:

Zitat von danieldelphi (Beitrag 1293353)
Ja okay, also heißt, dass das mein tool okay ist aber iwas anderes nicht stimmt?

Ich würde eher sagen: Lass Windows seinen Speicher so verwalten wie Windows das will...

Oder sagt Reportmemoryleaksonshutdown etwas anderes?

nee das sagt, dass alles okay ist.


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:22 Uhr.
Seite 6 von 7   « Erste     456 7      

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