AGB  ·  Datenschutz  ·  Impressum  







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

SetLength -> Zu wenig Arbeitsspeicher?

Ein Thema von AJ_Oldendorf · begonnen am 11. Aug 2010 · letzter Beitrag vom 18. Aug 2010
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    
AJ_Oldendorf

Registriert seit: 12. Jun 2009
Ort: Stadthagen
384 Beiträge
 
Delphi 10.3 Rio
 
#1

SetLength -> Zu wenig Arbeitsspeicher?

  Alt 11. Aug 2010, 11:31
Hallo zusammen,
laut Suchfunktion bin ich ja nicht der erste der das Problem hat.
Ich habe das Problem, dass wenn meine Anwendung lange läuft (paar Tage), dass irgendwann sporadisch bei folgenden Aufruf

Delphi-Quellcode:
var
  aLaenge : Integer;
begin
  aLaenge := 77; //Beispiel

  try
    SetLength(InputMsg^, 12+aLaenge);
  except
    on E: Exception do
    begin
      ErrorStr := 'Aufruf von SetLength():';
    end;
  end;
end;
eine Exception entsteht mit "zu wenig Arbeitsspeicher".
Es ist aber noch genug Speicher verfügbar laut TaskManager (auch virtueller Speicher).
Die Frage ist, wie kann sowas entstehen bzw. wie kann man dies evtl. verbessern / abändern?
Ich verwende Delphi 2009 und die Anwendung läuft auf Win2003 Server.

Wäre für jeden Tip dankbar.

Viele Grüße
Alex

PS: InputMsg wird als PAnsiString in diese Funktion übergeben...

Geändert von AJ_Oldendorf (11. Aug 2010 um 11:45 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

AW: SetLength -> Zu wenig Arbeitsspeicher?

  Alt 11. Aug 2010, 11:37
Hallo,

Ist die neue Länge des Strings abhängig von seiner alten Länge? d.h. benutzt du Length um die neue Länge zu bestimmen? Und bist du dir sicher, dass du einen gültigen PAnsiString übergibst?
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.225 Beiträge
 
Delphi 12 Athens
 
#3

AW: SetLength -> Zu wenig Arbeitsspeicher?

  Alt 11. Aug 2010, 11:40
Delphi kann, bzw. Win32-Anwendungen können standardmäßig nur maximal 2 GB an "virtuellem" Speicher verwalten ... ist der voll, dann knallt's

Ich vermute mal du hast ein Speicherleck, durch dein Rumgepointere oder Anderswo.


Scheib mal ReportMemoryLeaksOnShutdown := True; in den Constructor deiner Form.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (11. Aug 2010 um 11:42 Uhr)
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: SetLength -> Zu wenig Arbeitsspeicher?

  Alt 11. Aug 2010, 11:41
Hallo,

ich sehe keine Funktion, nur etwas Code.
Und der reicht nicht (Laenge nicht definiert).


Heiko
Heiko
  Mit Zitat antworten Zitat
AJ_Oldendorf

Registriert seit: 12. Jun 2009
Ort: Stadthagen
384 Beiträge
 
Delphi 10.3 Rio
 
#5

AW: SetLength -> Zu wenig Arbeitsspeicher?

  Alt 11. Aug 2010, 11:45
also die Variable ist defintiv gültig.
@hoika, das müsste aLaenge heißen in dem Code (habs geändert).
Ist ja auch nur der Inhalt der Funktion (ohne Funktionskopf).
Kann man an diesen "maximal 2 GB" etwas machen oder kommt man da nicht rum?
Was ist, wenn die Anwendung aber mit der Zeit immer mehr Daten im Bauch halten muss?

Gruß
Alex
  Mit Zitat antworten Zitat
Benutzerbild von freak4fun
freak4fun

Registriert seit: 22. Sep 2004
Ort: Hannover
1.807 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#6

AW: SetLength -> Zu wenig Arbeitsspeicher?

  Alt 11. Aug 2010, 11:49
Was ist, wenn die Anwendung aber mit der Zeit immer mehr Daten im Bauch halten muss?
Dann bekommt deine Anwendung und du Bauchschmerzen und du musst dein konzept eventuell überdenken.
Christian
IT: Schließen Sie bitte das Fenster. User: Die Tür auch?
i++; // zaehler i um 1 erhoehen
  Mit Zitat antworten Zitat
Benutzerbild von mleyen
mleyen

Registriert seit: 10. Aug 2007
609 Beiträge
 
FreePascal / Lazarus
 
#7

AW: SetLength -> Zu wenig Arbeitsspeicher?

  Alt 11. Aug 2010, 11:51
Was ist, wenn die Anwendung aber mit der Zeit immer mehr Daten im Bauch halten muss?
Dann lager zwichenzeitlich Daten auf der Festplatte aus.
  Mit Zitat antworten Zitat
AJ_Oldendorf

Registriert seit: 12. Jun 2009
Ort: Stadthagen
384 Beiträge
 
Delphi 10.3 Rio
 
#8

AW: SetLength -> Zu wenig Arbeitsspeicher?

  Alt 11. Aug 2010, 11:53
Ok verstehe ich aber das kann ja wohl keine Lösung sein oder?
Ich sag mal ganz krass, wenn ich viele Stringlisten mit vielen Objekten oder Zeigern habe, dann ist es doch keine Lösung "einfach" bei 2GB den Riegel vor die Tür zu schieben wenn mein Rechner doch 4GB hat...
Macht doch kein Sinn oder?

Gruß
Alex
  Mit Zitat antworten Zitat
AJ_Oldendorf

Registriert seit: 12. Jun 2009
Ort: Stadthagen
384 Beiträge
 
Delphi 10.3 Rio
 
#9

AW: SetLength -> Zu wenig Arbeitsspeicher?

  Alt 11. Aug 2010, 11:54
ist der verfügbare Speicher evtl. "nur" fragmentiert? kann man da vielleicht ansetzen und irgendwas machen?
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#10

AW: SetLength -> Zu wenig Arbeitsspeicher?

  Alt 11. Aug 2010, 11:56
Ok verstehe ich aber das kann ja wohl keine Lösung sein oder?
Ich sag mal ganz krass, wenn ich viele Stringlisten mit vielen Objekten oder Zeigern habe, dann ist es doch keine Lösung "einfach" bei 2GB den Riegel vor die Tür zu schieben wenn mein Rechner doch 4GB hat...
Macht doch kein Sinn oder?

Gruß
Alex
Doch macht es. Die anderen 2GB werden mehr oder weniger vom Betriebssystem benötigt. Ich glaube es gibt sogar irgendeinen Tick mit dem man auf 3GB oder so aufstocken kann, aber im Normalfall ist es wirklich so, dass man damit gut auskommen sollte. Wenn du nicht damit auskommst, dann solltest du tatsächlich deinen Code überdenken.

Also wenn ich ein Programm im Taskmanager sehen würde, was 2GB Speicher verbraucht, dann wär das aber ganz schnell abgeschossen....
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    


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 07:56 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