AGB  ·  Datenschutz  ·  Impressum  







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

OutOfMemory Fehler abfangen

Ein Thema von Aviator · begonnen am 29. Jul 2016 · letzter Beitrag vom 2. Aug 2016
Antwort Antwort
mensch72

Registriert seit: 6. Feb 2008
838 Beiträge
 
#1

AW: OutOfMemory Fehler abfangen

  Alt 30. Jul 2016, 18:36
Vergleiche eine OutOfMemory Exeption mal mit "OutOfDiskSpace" , wo du anschließend noch etwas in einer LogDatei abspeichern willst...

Eine OutOfMemory Exeption kannst du eigentlich nur sinnvoll extern mit einem anderem (WatchDog)Prozess behandeln. Unter Win64 hat ja jeder Win32 seinen eigenen "32Bit-Speicherbereich". Wenn in einem Prozess also wegen Speichermangel nix mehr geht, kümmert sich ein anderer externer Prozess dann um das "geordenete" Management der Situation.

Eigene Datenstrukturen, Klassen, Pointer auf Arrayelemente... um eine eigene Logik für "VirtualTable", "VirtualArray" und "CachedCursor" kommt man da dann nicht herum, wenn man eben nicht UniDac oder FireDac nimmt, sondern direkt mit den DB-System ala SQlite3.dll arbeitet.



Ich weiß duraus bei 32Bit-Programmen wo von ich rede und kenne die "physischen Grenzen"...
-> wir "spielen" hier im Standard mit Tabellen, wo aktuell üblich !400Mio! Datensätze(bei uns alle Finanztransaktionsdaten von XY der letzten 10Jahre bis auf die Millisekunde genau) drin sind und da ist ein "select *" mit Scroll als Grid und/oder Chart absolut nix besonderes. Wir konnten das mit keinem normalen SQL basierten DBMS lösen und haben speziell dafür was eigenes mit einer aktuellen Verbeitungsrate von besser 8Mio/Records pro Sekunde bei bis 450Mio Records per Table noch immer mit Delphi2007 in Win32 entwickelt.


=> du wills aber was universelles machen.. ergo schau dir in den Sourcen von FireDac oder UniDac an, wie die das lösen und dann kannst du dich ja entscheiden ob&wie du dein SQlite ManagementTool unter Win32 realisierst
  Mit Zitat antworten Zitat
hstreicher

Registriert seit: 21. Nov 2009
223 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

AW: OutOfMemory Fehler abfangen

  Alt 30. Jul 2016, 18:41
Google Delphi available memory

da es sich ja um ein 32 Bit Progamm handelt sollte das hier ausreichen

http://www.delphitricks.com/source-c...le_memory.html

oder das hier

http://stackoverflow.com/questions/7...4-gb-installed
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: OutOfMemory Fehler abfangen

  Alt 30. Jul 2016, 19:05
Ich kenn das Management Studio vom SQL-Server und dort werden per Default 1000 Zeilen geladen. Will man die nächsten haben, dann drückt man Next Page und es werden die nächsten 1000 geladen.

Halte ich zunächst für völlig ausreichend. Die 1000 kann der Anwender auch noch selber verändern.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Aviator

Registriert seit: 3. Jun 2010
1.611 Beiträge
 
Delphi 10.3 Rio
 
#4

AW: OutOfMemory Fehler abfangen

  Alt 31. Jul 2016, 00:02
Eine Grundeinschränkung von 1000 Zeilen wollte ich sowieso einbauen wenn jemand die Tabelle öffnet. Der User kann die Zahl danach natürlich erhöhen.

Entweder ich mache es so, dass der User selbst schuld ist wenn er so viele Datensätze lädt oder ich muss schauen, wie ich das abgefangen bekomme.

Die Links werde ich mir morgen anschauen. Würde es etwas bringen, vorher einen Count auszuführen und bei einer einstellbaren Zahl von Datensätzen gewarnt wird? Würde wahrscheinlich zu lange dauern und je mehr Stringspalten darin sind, desto früher läuft der Speicher ja auch über.
  Mit Zitat antworten Zitat
Aviator

Registriert seit: 3. Jun 2010
1.611 Beiträge
 
Delphi 10.3 Rio
 
#5

AW: OutOfMemory Fehler abfangen

  Alt 1. Aug 2016, 11:31
Gerade noch eine Sache hierzu. Ich könnte dafür zwar ein neues Topic aufmachen, weiß aber nicht ob sich das lohnt, da ich die Antworten nicht kenne.

Ich wollte meine Anwendung sowieso so programmieren, dass ich diese auch als 64-bit Anwendung kompilieren kann. Auf was muss ich genau achten, wenn ich ein Programm sowohl als 32-bit als auch 64-bit kompilieren möchte? Muss ich andere Variablentypen verwenden, ganze Strukturen eines Programmes anpassen oder kann ich überall mit den selben Variablen arbeiten und es funktioniert trotzdem? Möchte natürlich die Vorzüge von 64-bit auch im Bezug auf Integer o.ä. nutzen und nicht nur einen größeren Adressraum für den Arbeitsspeicher haben.

Falls ich hierfür einen neuen Thread aufmachen sollte da das Thema evtl. umfangreicher ist als gedacht, dann sagt einfach bescheid.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.235 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: OutOfMemory Fehler abfangen

  Alt 1. Aug 2016, 12:26
Möchte natürlich die Vorzüge von 64-bit auch im Bezug auf Integer ... nutzen
Die größe des Integers bleibt aber bei 64-Bit Systemen auch bei 32-Bit.
Und int64 kann man auch auf 32-Bit Systemen verwenden
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Aviator

Registriert seit: 3. Jun 2010
1.611 Beiträge
 
Delphi 10.3 Rio
 
#7

AW: OutOfMemory Fehler abfangen

  Alt 2. Aug 2016, 10:48
Möchte natürlich die Vorzüge von 64-bit auch im Bezug auf Integer ... nutzen
Die größe des Integers bleibt aber bei 64-Bit Systemen auch bei 32-Bit.
Und int64 kann man auch auf 32-Bit Systemen verwenden
Ja klar. War ja auch nur ein Beispiel. Auf was sollte man achten, wenn man eine 32-bit und eine 64-bit Anwendung im gleichen Projekt abdecken will? Welche Datentypen muss/sollte man verwenden? Muss man mit IFDEF usw. arbeiten oder oder oder?

Ich glaube das führt schon fast zu einem neuen Thread.
  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 22:25 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-2025 by Thomas Breitkreuz