AGB  ·  Datenschutz  ·  Impressum  







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

Out of Memory

Ein Thema von ngott2 · begonnen am 7. Mai 2015 · letzter Beitrag vom 7. Mai 2015
Antwort Antwort
Seite 1 von 2  1 2      
ngott2

Registriert seit: 26. Aug 2013
81 Beiträge
 
Delphi 10 Seattle Professional
 
#1

Out of Memory

  Alt 7. Mai 2015, 06:35
Hallo,
ich bekomme beim .Open in einer Datenbank ein Out of Memory Exception. Manchmal auch an anderen Stellen in der MDB klasse die wir selbst geschrieben haben
Die .MDB ist wenige MB groß.

Ich kann leider kein Code zeigen aber würde gerne Wissen wir ihr grundsätzlich beim Debuggen eines solchen Problem vorgeht.
Denn der Fehler tauchte nun bei 20 verschiednen Stellen auf immer mit einer Out of Memory Exception.

Benutzt ihr irgendwelche Tools dafür ?

Danke und gruß
ngott2
  Mit Zitat antworten Zitat
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.919 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Out of Memory

  Alt 7. Mai 2015, 06:41
Das klingt, als würden beim .Open gleich "alle" Datensätze gelesen. Hat Eure Klasse eine Option, die einer "FetchAll"-Eigenschaft entspricht? Sprich: Lässt sich das umbauen, so dass erstmal nur eine Handvoll Datensätze gelesen wird?
Und überhaupt: Wenn die DB nicht so groß ist, stellt sich die Frage, was "alle" Datensätze sind. Ein Kreuzverbund beispielsweise kann eine prekäre Angelegenheit werden, wenn es um den Speicherverbrauch geht. Möglicherweise fehlt da eine Bedingung, die die Ergebnismenge einschränken könnte.

Um zu Deiner Frage nach Ansatzpunkten zurück zu kommen: ich würde mit einer Stelle anfangen und schauen, wie das SQL aussieht und wie viele Datensätze da gelesen werden sollten.
Daniel R. Wolf
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
ngott2

Registriert seit: 26. Aug 2013
81 Beiträge
 
Delphi 10 Seattle Professional
 
#3

AW: Out of Memory

  Alt 7. Mai 2015, 06:57
Jetzt hat es sich aufgehangen. Bei der Funktion "TADOConnection.GetTableNames"

Die MDB hat 5 Tabellen und in dem Zeitpunkt wo der Out of Memory kommt sind diesmal keine Daten drin.

Im Open sollten nicht alle geladen werden.
  Mit Zitat antworten Zitat
hoika

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

AW: Out of Memory

  Alt 7. Mai 2015, 06:57
Hallo,
als "Tool" ist hier FastMM4 zu empfehlen.

Die FastMM4.pas einfach als erste Unit in die DPR einbinden,
dann sollte es schon mal ein bisschen Klarheit geben.

Ich habe mal meine Options-Datei angehängt.
Das .pas muss weg, es ist ja eine Inc-Datei.

Kleine Info an Daniel: Bitte neben .pas auch .inc beim Hochladen erlauben.


Heiko
Angehängte Dateien
Dateityp: pas FastMM4Options.inc.pas (17,7 KB, 5x aufgerufen)
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Out of Memory

  Alt 7. Mai 2015, 06:58
Klingt nach rekursiven Procedur/Funktions-Aufrufen.

Schau dir mal deine Schleifen in proceduren/Funktionen an, ob es da welche gibt die sich (mit Übergabeparametern) immer wieder selbst aufrufen.
Hinter dir gehts abwärts und vor dir steil bergauf ! (Wolfgang Ambros)
  Mit Zitat antworten Zitat
hoika

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

AW: Out of Memory

  Alt 7. Mai 2015, 06:59
Hallo,

zu deinem Problem hilft vielleicht das hier.

http://www.ibprovider.com/forum/site....php?f=1&t=756


Heiko
Heiko
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Out of Memory

  Alt 7. Mai 2015, 07:06
Ob das bei Access hilft?
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: Out of Memory

  Alt 7. Mai 2015, 08:19
Für Access sollte die CurserLocation auf clUseServer gestellt werden.
Ansonsten wird jeder Datensatz mindestens 2* im Speicher gehalten.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Out of Memory

  Alt 7. Mai 2015, 09:19
Die selbe Abfrage in einem anderem DB-Tool, bzw. mit anderen DB-Komponenten, lässt sich aber ausführen?
[edit] Oder ist hier das Open der Connection gemaint?
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu ( 7. Mai 2015 um 09:25 Uhr)
  Mit Zitat antworten Zitat
ngott2

Registriert seit: 26. Aug 2013
81 Beiträge
 
Delphi 10 Seattle Professional
 
#10

AW: Out of Memory

  Alt 7. Mai 2015, 14:15
Für Access sollte die CurserLocation auf clUseServer gestellt werden.
Ansonsten wird jeder Datensatz mindestens 2* im Speicher gehalten.
clUseServer verwenden wir schon.


Die selbe Abfrage in einem anderem DB-Tool, bzw. mit anderen DB-Komponenten, lässt sich aber ausführen?
[edit] Oder ist hier das Open der Connection gemaint?
Ja lässt sich ausführen.

Hatte gerade ne wichtigere Aufgabe. Das Out of Memory in der DB tritt nur bei jeden 10 Versuch auf.
Ansonsten tritt es auf wenn er was in unsere Datei die Records seriell speichert hinzufügen will.

Ich habe die Records jetzt einmal gelöscht und lasse sie neu erstellen.
Mal sehen vielleicht hilft das.

Das Open wird wiederholt aufgerufen. Funktioniert aber in der Regel Einwand frei.
Die Fehler tretten nämlich nur bei einen Hersteller auf.

Geändert von ngott2 ( 7. Mai 2015 um 14:18 Uhr)
  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 05:08 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