AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Memory leak durch funktion readln

Ein Thema von danieldelphi · begonnen am 12. Mär 2015 · letzter Beitrag vom 13. Mär 2015
Antwort Antwort
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.154 Beiträge
 
Delphi 10.3 Rio
 
#1

AW: Memory leak durch funktion readln

  Alt 13. Mär 2015, 10:08
Der Vorteil von Filestreams liegt ja nicht direkt an der Geschwindigkeit, sondern an der Abstraktion.
Völlig korrekt... Vorausgesetzt man arbeitet mit Streams... Wenn der Rest der Application Blockread/write nimmt hilft das auch nicht...

Zugegeben die Verwendung von TStream in Grundroutinen macht Sinn, wem man diese dann mit Memory- oder Filestream aufrufen kann...

Bei Dateien < Meine_Max_Puffergröße lad ich egal was einfach ins RAM und go... Klar kann ich auch eine Textdatei Zeilenweise einlesen...
Aber eine 1MB Textdatei in einem rutsch in den Puffer und dann mit einem Zeiger : ^Char durchlaufen ist echt schneller, wenn ich "nur" etwas Suche!

Mavarik
  Mit Zitat antworten Zitat
danieldelphi

Registriert seit: 12. Mär 2015
38 Beiträge
 
#2

AW: Memory leak durch funktion readln

  Alt 13. Mär 2015, 10:13
Der Vorteil von Filestreams liegt ja nicht direkt an der Geschwindigkeit, sondern an der Abstraktion.
Völlig korrekt... Vorausgesetzt man arbeitet mit Streams... Wenn der Rest der Application Blockread/write nimmt hilft das auch nicht...

Zugegeben die Verwendung von TStream in Grundroutinen macht Sinn, wem man diese dann mit Memory- oder Filestream aufrufen kann...

Bei Dateien < Meine_Max_Puffergröße lad ich egal was einfach ins RAM und go... Klar kann ich auch eine Textdatei Zeilenweise einlesen...
Aber eine 1MB Textdatei in einem rutsch in den Puffer und dann mit einem Zeiger : ^Char durchlaufen ist echt schneller, wenn ich "nur" etwas Suche!

Mavarik
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?
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#3

AW: Memory leak durch funktion readln

  Alt 13. Mär 2015, 10:18
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?

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
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector

Geändert von p80286 (13. Mär 2015 um 10:21 Uhr)
  Mit Zitat antworten Zitat
danieldelphi

Registriert seit: 12. Mär 2015
38 Beiträge
 
#4

AW: Memory leak durch funktion readln

  Alt 13. Mär 2015, 10:26
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?

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.
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.154 Beiträge
 
Delphi 10.3 Rio
 
#5

AW: Memory leak durch funktion readln

  Alt 13. Mär 2015, 11:04
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
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.199 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: Memory leak durch funktion readln

  Alt 13. Mär 2015, 11:26
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.
  Mit Zitat antworten Zitat
danieldelphi

Registriert seit: 12. Mär 2015
38 Beiträge
 
#7

AW: Memory leak durch funktion readln

  Alt 13. Mär 2015, 11:28
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?
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.154 Beiträge
 
Delphi 10.3 Rio
 
#8

AW: Memory leak durch funktion readln

  Alt 13. Mär 2015, 11:34
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?
  Mit Zitat antworten Zitat
danieldelphi

Registriert seit: 12. Mär 2015
38 Beiträge
 
#9

AW: Memory leak durch funktion readln

  Alt 13. Mär 2015, 11:27
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:/
  Mit Zitat antworten Zitat
Antwort Antwort


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 12:01 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz