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
ngott2

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

Out of Memory

  Alt 7. Mai 2015, 07: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.920 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Out of Memory

  Alt 7. Mai 2015, 07: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, 07: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.276 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Out of Memory

  Alt 7. Mai 2015, 07: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
hoika

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

AW: Out of Memory

  Alt 7. Mai 2015, 07: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.869 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Out of Memory

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

Registriert seit: 13. Aug 2002
17.213 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: Out of Memory

  Alt 7. Mai 2015, 09: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 baumina
baumina

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

AW: Out of Memory

  Alt 7. Mai 2015, 07: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
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#9

AW: Out of Memory

  Alt 7. Mai 2015, 15:24
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.


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.
Das ist doch ein wenig wirr. Versuch doch das Problem nochmals so zu beschreiben, daß auch jemand es versteht, der Dir nicht über die Schulter schaut.
( Welcher Hersteller? welche Records? 20 Stellen? ....)
Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#10

AW: Out of Memory

  Alt 7. Mai 2015, 15:58
Denn der Fehler tauchte nun bei 20 verschiednen Stellen auf immer mit einer Out of Memory Exception.
..
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.

Die Fehler tretten nämlich nur bei einen Hersteller auf.
Das ist doch ein wenig wirr. Versuch doch das Problem nochmals so zu beschreiben, daß auch jemand es versteht, der Dir nicht über die Schulter schaut.
( Welcher Hersteller? welche Records? 20 Stellen? ....)
Ja, das ist tatsächlich etwas wirr. Ich wage mal eine Theorie.
Bei Zugriff auf Access geschieht das ggF. mit MS OLEDB Provider, gibt's ja mittlerweile diverse, mögliche Varianten. Besonders ältere spinnen gern mal bei bestimmten Dateninhalten rum (gerne z.B. "ungültige" Datumsangaben).
Also bei Daten eines bestimmten Herstellers/Mandanten führen bestimmte Daten zu diesem Problem.
Prüfung: Gezielt Dateninhalte vergleichen
Abhilfe: Daten bereinigen oder besseren Treiber verwenden

Unabhängig von den Prüfungen, Ergebnissen und Maßnahmen kannst Du mal die verwendete Infrastruktur im Datenzugriff posten. Nicht die Delphi VCL Komponenten, sondern worauf die aufsetzen (ado, odbc, ...), Treiberversionen ..
Gruß, Jo
  Mit Zitat antworten Zitat
Antwort Antwort


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 23:31 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz