Autor Beitrag
tortom1000
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 175

Win XP, Win Server 2003 - 2012, Win 7
Delphi 7
BeitragVerfasst: Mi 23.02.11 12:51 
Hallo,
folgende Zeilen erhöhen pro Aufruf 4 KB Speicherbedarf laut Taskmanager:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
  ServiceManager := TServiceManager.Create;
  try
    ServiceManager.Connect; // Connects to the local Service-Manger
    ServiceManager.OpenServiceConnection(pchar(dienst[i]))
    if ServiceManager.ServiceStopped then dienststarten:='ja';
  finally
    FreeAndNil(ServiceManager);
  end;

Die zugrunde liegende Unit ServiceManager habe ich von swissdelphicenter und entsprechend eingebunden.

Kennt jemand das Problem bzw. kann helfen, das Problem zu erkennen/lösen?

Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt
Moderiert von user profile iconNarses: URL-Tag hinzugefügt.
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Mi 23.02.11 14:19 
Moin!

user profile icontortom1000 hat folgendes geschrieben Zum zitierten Posting springen:
Kennt jemand das Problem bzw. kann helfen, das Problem zu erkennen/lösen?
Ich würde das erstmal nicht als "Fehler", sondern als "Effekt" bezeichnen. :nixweiss: Ich habe mir die Klasse TServiceManager jetzt nicht im Detail angesehen, aber dort wird ordentlich mit PChars hantiert. Das kann eine Menge temporärer Strings auf dem Heap erzeugen, wenn da Concatenations gemacht werden. Das wiederum soll wohl (laut user profile iconjaenicke) bei Delphi-Versionen vor XE zu "Problemen" im Speichermanager geführt haben. :nixweiss:

Ich habe so ähnliche Effekte auch schon bei einem meiner Tools (da waren allerdings auch Threads im Spiel) bemerkt. Allerdings hat auf lange Sicht der Speicherbedarf im Taskmanager auch mal wieder abgenommen. Das muss nicht gleich ein Mem-Leak sein. :idea:

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 23.02.11 15:04 
user profile iconNarses hat folgendes geschrieben Zum zitierten Posting springen:
Das wiederum soll wohl (laut user profile iconjaenicke) bei Delphi-Versionen vor XE zu "Problemen" im Speichermanager geführt haben. :nixweiss:
Der Übergang ist nicht unbedingt XE, auch ab Delphi 2006 hat sich da durch FastMM einiges getan.

Hier kann ich das Problem weder mit 2006 noch mit XE nachvollziehen, hab aber grad auch nicht die Zeit es mir wirklich anzuschauen.

Um welche Delphiversion geht es denn? Kannst du ein Demoprojekt noch anhängen bitte?
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Mi 23.02.11 16:10 
Hab mir die Unit grad nicht angeguckt, aber ist das "normal", dass da ein Open ausgeführt wird, ohne zugehöriges Close?

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 23.02.11 16:19 
Naja, ein kurzer Blick sagt mir, dass CloseServiceHandle jedenfalls nie aufgerufen wird. Ob das erforderlich wäre, weiß ich gerade nicht, müsste ich auch nachschauen.
tortom1000 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 175

Win XP, Win Server 2003 - 2012, Win 7
Delphi 7
BeitragVerfasst: Do 24.02.11 14:03 
Hallo,
ich nutze Delphi 7. Ich werde das Verhalten in einem übersichtlichen Demo-Projekt
mal isolieren und posten.
Brauche dazu aber ein bissel Zeit.

Vorab schon mal vielen Dank für eure Hilfen.

Gruß
Tortom

---Moderiert von user profile iconNarses: Beiträge zusammengefasst---

so, hier die demo...
Einloggen, um Attachments anzusehen!
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Do 24.02.11 14:56 
Du hast das Formular in der Unit1.pas + Unit1.dfm im Verzeichnis drüber vergessen. ;-)
tortom1000 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 175

Win XP, Win Server 2003 - 2012, Win 7
Delphi 7
BeitragVerfasst: Fr 25.02.11 10:54 
hupps,
sorry, da war ich gestern wohl nicht ganz bei der Sache... :?

Hier nun die funktionierende.

Über den Timer wird jede Sekunde der Dienst gestartet und
nach 1 Sekunde (per sleep) wieder gestoppt.
Pro Timerdurchlauf erhöht sich bei mir die Speicherauslastung
um 4 k, manchmal aber auch nicht(???) so regelmäßig.
Fakt ist jedoch, das die Speicherauslastung anwächst.
Einloggen, um Attachments anzusehen!
Bergmann89
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1742
Erhaltene Danke: 72

Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
BeitragVerfasst: Fr 25.02.11 16:57 
Hey,

wenn es wirklich an der Speicherverwaltung liegt, dann gibts auch ne FastMM4-Unit für Delphi7. Ich benutzt die auch seit einiger Zeit und kann mich nicht beschweren.

MfG Bergmann.

_________________
Ich weiß nicht viel, lern aber dafür umso schneller^^
tortom1000 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 175

Win XP, Win Server 2003 - 2012, Win 7
Delphi 7
BeitragVerfasst: Di 01.03.11 10:24 
Hallo Bergmann,
was genau macht denn die FastMM4-Unit?
Ist es ein Tool, um Fehler zu "entdecken", die dann per eigener Änderung des Programms abgestellt werden müssen
oder korrigiert das Tool diese "Fehler" selbst.

Gibt es dazu 'ne Anleitung. (Hab wenig auklärendes darüber im Netz gefunden...)

Viele Grüße
Tortom
elundril
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3747
Erhaltene Danke: 123

Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
BeitragVerfasst: Di 01.03.11 10:53 
Fastmm4 kann dir zb zeigen ob und wo du speicherlecks hast. Ob es noch mehr kann weiß ich nicht, ich habs vorrangig immer dafür verwendet.

Von selbst die fehler beheben kann das ding ber (noch) nicht, das bleibt weiterhin an dir hängen.

Lg elundril

_________________
This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Di 01.03.11 11:51 
Wenn du den FullDebug-Mode anschaltest, bekommst du ein ausführliches Log inkl. Stacktrace, wenn entweder ein Speicherleck auftritt oder wenn auf ein bereits freigegebenes Objekt zugegriffen wird.

Was welche Option bewirkt ist sehr sehr ausführlich in der .inc Datei definiert.
Bergmann89
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1742
Erhaltene Danke: 72

Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
BeitragVerfasst: Di 01.03.11 16:43 
Hey,

außer dem debug mode (der auch sehr nützlich is) kann man noch bisl mehr speicher raus holen. Steht auch mit in der beschreibung in der unit. Bei 64bit systemen war es glaube 4gb. Bei 32bit systemen bisl weniger, aber immernoch mehr als die standarspeicherverwaltung von delphi.

Mfg Bergmann

p.s: cool, mein 1. Beitrag, dem ich vom handy aus geschrieben hab :P

_________________
Ich weiß nicht viel, lern aber dafür umso schneller^^
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Di 01.03.11 16:49 
user profile iconBergmann89 hat folgendes geschrieben Zum zitierten Posting springen:
p.s: cool, mein 1. Beitrag, dem ich vom handy aus geschrieben hab :P
Bei meinen vom Handy aus stimmt trotzdem die Groß- und Kleinschreibung. :P
Bergmann89
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1742
Erhaltene Danke: 72

Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
BeitragVerfasst: Di 01.03.11 16:56 
Hey,

dazu hatte ich jetz keine lust^^ es is früh am morgen und ich lieg noch im bett xD

Mfg Bergmann

_________________
Ich weiß nicht viel, lern aber dafür umso schneller^^