Arbeitsspeicherprobleme
Moderator: Moderatoren
-
- UDF-Programmierer
- Beiträge: 51
- Registriert: Di, 18. Okt 2005 12:35
- Wohnort: 41747 Viersen
- Kontaktdaten:
Arbeitsspeicherprobleme
Hallo,
habe eine kleine ca. 600kb große EXE. Im Normalbetrieb verbraucht diese ca. 19MB Arbeitsspeicher. (was mir für diese kleine Exe auch schon sehr viel vorkommt). Bei einem unserer Kunden steigt jedoch der Arbeitsspeicher verbrauch im Laufendenbetrieb ständig. Ich kann es jedoch auf keinem anderen System nachvollziehen.
Jemand ne Idee was das sein könnte ?
Grüße
habe eine kleine ca. 600kb große EXE. Im Normalbetrieb verbraucht diese ca. 19MB Arbeitsspeicher. (was mir für diese kleine Exe auch schon sehr viel vorkommt). Bei einem unserer Kunden steigt jedoch der Arbeitsspeicher verbrauch im Laufendenbetrieb ständig. Ich kann es jedoch auf keinem anderen System nachvollziehen.
Jemand ne Idee was das sein könnte ?
Grüße
- Martin Altmann
- Foren-Administrator
- Beiträge: 16517
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Hallo Ari,
der Speicherbedarf setzt sich ja nicht nur aus der Größe der EXE sondern auch aus den geladenen DLLs zusammen!
Worin unterscheidet sich der betreffende PC von den anderen? OS? Lokale Installation?
Viele Grüße,
Martin
der Speicherbedarf setzt sich ja nicht nur aus der Größe der EXE sondern auch aus den geladenen DLLs zusammen!
Worin unterscheidet sich der betreffende PC von den anderen? OS? Lokale Installation?
Viele Grüße,
Martin
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/
Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
-
- UDF-Programmierer
- Beiträge: 51
- Registriert: Di, 18. Okt 2005 12:35
- Wohnort: 41747 Viersen
- Kontaktdaten:
hallo
der PC auf dem der Fehler auftritt hat als OS ein Windows XP , habe es hier bei uns unter Windows XP und unter Windows 2000 laufen gelassen (auch über längere Zeiträume)
Ansonsten greifen die verschiedenen Rechner alle auf die gleichen DLL Versionen zu.
Das Programm liest lediglich alle paar Sekunden Daten aus einer Datenbank aus und schickt Sie an den ComPort
der PC auf dem der Fehler auftritt hat als OS ein Windows XP , habe es hier bei uns unter Windows XP und unter Windows 2000 laufen gelassen (auch über längere Zeiträume)
Ansonsten greifen die verschiedenen Rechner alle auf die gleichen DLL Versionen zu.
Das Programm liest lediglich alle paar Sekunden Daten aus einer Datenbank aus und schickt Sie an den ComPort
- Martin Altmann
- Foren-Administrator
- Beiträge: 16517
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Hallo Ari,
und sowohl bei Dir als auch bei Deinem Kunden ist alles lokal auf dem PC installiert?
Oder liegen die EXE und/oder die DLLs auf einem Netlaufwerk?
Viele Grüße,
Martin
und sowohl bei Dir als auch bei Deinem Kunden ist alles lokal auf dem PC installiert?
Oder liegen die EXE und/oder die DLLs auf einem Netlaufwerk?
Viele Grüße,
Martin
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/
Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
-
- Rekursionen-Architekt
- Beiträge: 193
- Registriert: Fr, 09. Jun 2006 7:52
- Wohnort: Nähe Sömmerda
Hallo,
wir hatten unter der XBase-Version 1.80 das selbe Problem.
Die Ursache könnte im Garbage-Collector liegen.
Das Hochlaufen des Speichers war weg, nachdem wir kaum noch STATIC-Variable (konsequent keine STATIC-Arrays) verwendet haben. Allerdings sind wir zu diesem Zeitpunkt auch zur (fast) ausschließlichen OOP übergegangen.
Viele Grüße
Gerd
wir hatten unter der XBase-Version 1.80 das selbe Problem.
Die Ursache könnte im Garbage-Collector liegen.
Das Hochlaufen des Speichers war weg, nachdem wir kaum noch STATIC-Variable (konsequent keine STATIC-Arrays) verwendet haben. Allerdings sind wir zu diesem Zeitpunkt auch zur (fast) ausschließlichen OOP übergegangen.
Viele Grüße
Gerd
-
- UDF-Programmierer
- Beiträge: 51
- Registriert: Di, 18. Okt 2005 12:35
- Wohnort: 41747 Viersen
- Kontaktdaten:
- Martin Altmann
- Foren-Administrator
- Beiträge: 16517
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Hallo Ari,
kann es sein, dass bei Deinem Kunden vielleicht ein Novell oder Linux Netz zum Einsatz kommt?
Oder ist das auch (wie bei Dir?) normal TCP/IP (oder NetBEUI) von MS?
Normalerweise werden die Dlls ja nur einmalig (für jedes Programm) in den Hauptspeicher geladen...
Geht der Speicher weg, wenn Du immer nur eine bestimmte Funktion dort aufrufst, oder auch wenn das Programm "nichts" macht?
Viele Grüße,
Martin
kann es sein, dass bei Deinem Kunden vielleicht ein Novell oder Linux Netz zum Einsatz kommt?
Oder ist das auch (wie bei Dir?) normal TCP/IP (oder NetBEUI) von MS?
Normalerweise werden die Dlls ja nur einmalig (für jedes Programm) in den Hauptspeicher geladen...
Geht der Speicher weg, wenn Du immer nur eine bestimmte Funktion dort aufrufst, oder auch wenn das Programm "nichts" macht?
Viele Grüße,
Martin
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/
Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
-
- UDF-Programmierer
- Beiträge: 51
- Registriert: Di, 18. Okt 2005 12:35
- Wohnort: 41747 Viersen
- Kontaktdaten:
- Martin Altmann
- Foren-Administrator
- Beiträge: 16517
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Hallo Ari,
also wenn Du (bzw. Dein Programm) "nichts" macht, kann auch kein Speicher weggehen (oder pollt Dein Programm den Comport, auch wenn es "nichts" macht?)!
An Deinem Programm wird es dort wohl nicht liegen!!
Was läuft da noch an Software parallel zu Deinem Programm?
Viele Grüße,
Martin
also wenn Du (bzw. Dein Programm) "nichts" macht, kann auch kein Speicher weggehen (oder pollt Dein Programm den Comport, auch wenn es "nichts" macht?)!
An Deinem Programm wird es dort wohl nicht liegen!!
Was läuft da noch an Software parallel zu Deinem Programm?
Viele Grüße,
Martin
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/
Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
-
- UDF-Programmierer
- Beiträge: 51
- Registriert: Di, 18. Okt 2005 12:35
- Wohnort: 41747 Viersen
- Kontaktdaten:
- Martin Altmann
- Foren-Administrator
- Beiträge: 16517
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Hmm,
eigentlich nicht.
Was zeigt denn der Taskmanager an, wenn du Dein Programm verkleinerst als Symbol, eine Weile wartest (der Speicerverbrauch dürfte dann erheblich fallen) und dann Dein Programm wieder vergrößerst?
Der Speicherverbrauch müßte dann wieder ansteigen, aber er wird den alten Wert (erstmal) nicht erreichen!
So zuverlässig ist der Taskmanager im übrigen nicht, um so etwas zu prüfen!
Schau Dir mal die Tools von SysInternals an - dort findest Du bestimmt einiges, was Dir bei der Ursachensuche helfen sollte.
Hast Du Dir schon mal den Profiler von Alaska angeschaut? Ich selber habe damit zwar auch keine Erfahrung, aber vielleicht hilft Dir das ja auch?
Viele Grüße,
Martin
eigentlich nicht.
Was zeigt denn der Taskmanager an, wenn du Dein Programm verkleinerst als Symbol, eine Weile wartest (der Speicerverbrauch dürfte dann erheblich fallen) und dann Dein Programm wieder vergrößerst?
Der Speicherverbrauch müßte dann wieder ansteigen, aber er wird den alten Wert (erstmal) nicht erreichen!
So zuverlässig ist der Taskmanager im übrigen nicht, um so etwas zu prüfen!
Schau Dir mal die Tools von SysInternals an - dort findest Du bestimmt einiges, was Dir bei der Ursachensuche helfen sollte.
Hast Du Dir schon mal den Profiler von Alaska angeschaut? Ich selber habe damit zwar auch keine Erfahrung, aber vielleicht hilft Dir das ja auch?
Viele Grüße,
Martin
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/
Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
-
- UDF-Programmierer
- Beiträge: 51
- Registriert: Di, 18. Okt 2005 12:35
- Wohnort: 41747 Viersen
- Kontaktdaten:
-
- Rekursionen-Architekt
- Beiträge: 159
- Registriert: So, 16. Apr 2006 11:12
- Wohnort: Öhringen
Hallo.
Wir hatten mal ein ähnliches Problem mit Speicherüberlauf.
Über eine API-Funktion haben wir den Standarddrucker umgeschaltet.
Anschließend auch ein Refresh auf die Anzeige.
(Falls system - Drucker offen wird der Pfeil für Standarddrucker aktuell gesetzt).
Diese Funktion hat dann den Speicher auch nicht mehr freigegeben.
Nur Drucker umschalten alleine ging dann.
In ACCESS mit VBA hatte ich das selbe Problem mit dem Speicher.
Es gibt einige Funktionen in Windows die nur Speicher reservieren, aber nicht mehr freigeben.
Verwendest Du API aufrufe?
COM-Port über welche Tools?
Gruß
Bernd
Wir hatten mal ein ähnliches Problem mit Speicherüberlauf.
Über eine API-Funktion haben wir den Standarddrucker umgeschaltet.
Anschließend auch ein Refresh auf die Anzeige.
(Falls system - Drucker offen wird der Pfeil für Standarddrucker aktuell gesetzt).
Diese Funktion hat dann den Speicher auch nicht mehr freigegeben.
Nur Drucker umschalten alleine ging dann.
In ACCESS mit VBA hatte ich das selbe Problem mit dem Speicher.
Es gibt einige Funktionen in Windows die nur Speicher reservieren, aber nicht mehr freigeben.
Verwendest Du API aufrufe?
COM-Port über welche Tools?
Gruß
Bernd
Bernd Reinhardt
fa.reinhardt@gmx.de
fa.reinhardt@gmx.de