AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Service braucht immer mehr Speicher!!!!??????
Thema durchsuchen
Ansicht
Themen-Optionen

Service braucht immer mehr Speicher!!!!??????

Ein Thema von JamesBlond · begonnen am 6. Apr 2004 · letzter Beitrag vom 7. Apr 2004
Antwort Antwort
Seite 1 von 2  1 2      
JamesBlond

Registriert seit: 17. Mär 2004
Ort: PB
25 Beiträge
 
Delphi 5 Enterprise
 
#1

Service braucht immer mehr Speicher!!!!??????

  Alt 6. Apr 2004, 09:56
Hallo!
Ich habe einen Windows-Service geschrieben. Der funktioniert soweit auch wunderbar, allerdings braucht der immer mehr Speicher: Er fängt an mit ca. 2.000 K; nach ca. 5 Minuten ist er dann bei ca. 20.000 K
Mit Debug hab ich inzwischen herausgefunden, dass es an einer TStringList liegt, die immer wieder gefüllt wird.
Aber waraum? Denn nachdem ich die Daten entsprechend verarbeitet habe, sollte der Speicherplatz doch wieder freigegeben werden. (Ich verwende die Methode: List.Free
Das sollte doch funktionieren, oder mach ich beim Freigeben des Speichers was falsch?

Danke!

Gruß

Matthias
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#2

Re: Service braucht immer mehr Speicher!!!!??????

  Alt 6. Apr 2004, 09:57
Vielleicht hilft dir ja
  FreeAndNil(List); Du könntest zusätzlich noch prüfen, ob du irgendwo speicher mit GetMem reservierst aber nicht wiederfreigibst.

mfG
mirage228
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
JamesBlond

Registriert seit: 17. Mär 2004
Ort: PB
25 Beiträge
 
Delphi 5 Enterprise
 
#3

Re: Service braucht immer mehr Speicher!!!!??????

  Alt 6. Apr 2004, 10:41
Super, es ist schonmal erheblich weniger geworden, aber er steigt weiter kontinuierlich. (Hatte auch noch ein FreeMem vergessen)
Gibt es evtl. eine Möglichkeit, zu überwachen, welche Variablen gerade im Speicher liegen und wieviel Platz die belegen?

Schon mal vielen Dank!

Gruß

Matthias
  Mit Zitat antworten Zitat
Benutzerbild von Smokey
Smokey

Registriert seit: 10. Nov 2003
Ort: Puerto de la Cruz
158 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Service braucht immer mehr Speicher!!!!??????

  Alt 6. Apr 2004, 10:46
Benutzt du in deiner Stringliste auch Objekte?
Wenn ja immer dran denken, was die Help dazu sagt :

Zitat:
Note: The TStringList object does not own the objects you add this way. Objects added to the TStringList object still exist even if the TStringList instance is destroyed. They must be explicitly destroyed by the application.
Wenn nicht, weitermachen !!
Greif dir ein gutes Stück Fleisch auf deinem Weg nach draussen !!!
  Mit Zitat antworten Zitat
Shylock

Registriert seit: 29. Mär 2004
7 Beiträge
 
Delphi 7 Professional
 
#5

Re: Service braucht immer mehr Speicher!!!!??????

  Alt 6. Apr 2004, 10:46
Hi.

Ich hab irgendwo im Kopf rumschwirren, dass Programme sehr ungern den Speicher tatsächlich wieder frei geben. Auch nach einem x.free. Das Objekt ist dann zwar aus deinem Speicher entfernt, aber dein Programm gibt den Speicher nicht an Windows zurück.
Wäre es vieleicht eine Möglichkeit statt immer eine neue Stringlist zu benutzen eine StringList zu verwenden und diese immer wieder zu löschen (sl.clear)? Dann hast du nur ein Objekt und die StringList braucht maximal so viel Speicher, wie der längste String, den du in ihr gespeichert hast (plus overhead).

Korrigiert mich, wenn ich falsch liege.

(FreeAndNil dürfte sich genauso verhalten, da es nichts anderes macht als die Referenz vor dem Freigeben auf nil zu setzen. Ich bevorzuge übrigens diese Methode um ein Objekt freizugeben.)
  Mit Zitat antworten Zitat
JamesBlond

Registriert seit: 17. Mär 2004
Ort: PB
25 Beiträge
 
Delphi 5 Enterprise
 
#6

Re: Service braucht immer mehr Speicher!!!!??????

  Alt 6. Apr 2004, 11:22
Hallo!
Leider hat das alles nichts gebracht. Der Speicher wächst weiter.
So langsam weiß ich echt nicht mehr, woran es liegt.
Kann man sich die benötigte Speichergröße einer Variable zur Laufzeit anzeigen lassen?

Gruß

Matthias
  Mit Zitat antworten Zitat
Benutzerbild von APP
APP

Registriert seit: 24. Feb 2003
Ort: Graz (A)
705 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: Service braucht immer mehr Speicher!!!!??????

  Alt 6. Apr 2004, 12:45
Hallo Matthias,
ich nehme an, Du arbeitest in Deinem Service mit einer (Endlos-)schleife.
Kann es sein, dass Du die Stringliste in der Schleifer immer neu erzeugst
und befüllst, aber nur ausserhalb der Schleife zerstörst?

Ansonsten solltest Du uns ein bißchen was von Deinem Code zeigen.
Armin P. Pressler

BEGIN
...real programmers are using C/C++ - smart developers Delphi;
END;
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#8

Re: Service braucht immer mehr Speicher!!!!??????

  Alt 6. Apr 2004, 13:31
Also ich würde so vorgehen:

- MemCheck downloaden und einbinden
- den Service zunächst nur als "normale" Anwendung laufen lassen
(dies lässt sich bestimmt über bedingte Compilierung oder einen Startparameter managen)

Beim Beenden der Anwendung gibt MemCheck die Speicherlecks aus.
Kommerzielle Tools wie z.B. Boundschecker leisten noch mehr wie MemCheck,
aber MemCheck ist wie der Author verspricht: "what you get is what you need".
Andreas
  Mit Zitat antworten Zitat
JamesBlond

Registriert seit: 17. Mär 2004
Ort: PB
25 Beiträge
 
Delphi 5 Enterprise
 
#9

Re: Service braucht immer mehr Speicher!!!!??????

  Alt 6. Apr 2004, 13:50
Hallo!
Werde die Tips gleich mal ausprobieren.
@APP
Nein, ich arbeite mit einem Timer. OnTimer wird dann immer eine Prozedur aufgerufen. Diese macht als erstes:
List:= TStringList.Create; und als letztes:
List.free; Daran wirds wohl nicht liegen.
Trotzdem danke!

Gruß

Matthias
  Mit Zitat antworten Zitat
DelphiDeveloper

Registriert seit: 9. Apr 2003
Ort: Köln
256 Beiträge
 
Delphi XE2 Enterprise
 
#10

Re: Service braucht immer mehr Speicher!!!!??????

  Alt 6. Apr 2004, 14:07
wie siehts aus mit der frage von @Smokey


haengst du in die Stringliste objekte?
wenn ja muessen die explizit abgeraeumt werden.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 08:18 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