AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Objektliste sprengt RAM (32-bit)

Ein Thema von Jens01 · begonnen am 12. Jul 2016 · letzter Beitrag vom 18. Jul 2016
Antwort Antwort
Jens01

Registriert seit: 14. Apr 2009
673 Beiträge
 
#1

AW: Objektliste sprengt RAM (32-bit)

  Alt 12. Jul 2016, 15:45
Delphi-Quellcode:
    FName : string;
    FHerkunft : string;
    FLF : Integer;
    FIndx : Integer;
    FValue : TAnyValue;
    FKategorie : TKategorie;
    FKombiName : string;
    FKombiGruppe : TKombiGruppe;
    FKombiRechenIndex: Integer;
So das ist meine reale Liste. (Das oben war nur das Prinzip)
Was mir gerade ins Auge springt, ist dies TAnyValue, was ich nutze.
Kann das das Problem sein? Ich hoffe TAnyValue ist bekannt.

P.S.: TKategorie, TKombiGruppe sind nur so kleine Typen : TKategorie = (eins, zwei, drei ,..);
Achtung: Bin kein Informatiker sondern komme vom Bau.

Geändert von Jens01 (12. Jul 2016 um 15:51 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von milos
milos

Registriert seit: 14. Jul 2008
Ort: Bern (CH)
510 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Objektliste sprengt RAM (32-bit)

  Alt 12. Jul 2016, 15:50
Hi,

wie schon erwähnt... Sicher das es keine Memory Leaks sind? Glaube nicht dass das von den ganzen strings kommt...
schau doch mal mit FastMM oder Delphi-Referenz durchsuchenReportMemoryLeaksOnShutdown ( := true; ) ob es da welche gibt.

Falls ja musst du halt ein wenig aufräumen

Freundliche Grüsse
Milos
  Mit Zitat antworten Zitat
Jens01

Registriert seit: 14. Apr 2009
673 Beiträge
 
#3

AW: Objektliste sprengt RAM (32-bit)

  Alt 12. Jul 2016, 15:53
Hatte ich vergessen zu erwähnen: Es läuft FastMM.

Und es sind ganz sicher keine Leaks, das prüfe ich ständig.
Achtung: Bin kein Informatiker sondern komme vom Bau.
  Mit Zitat antworten Zitat
Jens01

Registriert seit: 14. Apr 2009
673 Beiträge
 
#4

AW: Objektliste sprengt RAM (32-bit)

  Alt 12. Jul 2016, 18:12
Danke für die Einschätzungen.

Die kreisen die Suche schon etwas ein. Ich werde erst einmal ein Testprojekt bauen und mich dann zurückmelden.
Achtung: Bin kein Informatiker sondern komme vom Bau.
  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
 
#5

AW: Objektliste sprengt RAM (32-bit)

  Alt 12. Jul 2016, 18:16
Also ohne annähernd konkrete Werte kann man so ca. Angaben überhaupt nicht bewerten.

mehrere zehntausend Objekte belegen nur ein paar KiloByte im Stream

Jedes Objekt müsste im Stream so mindestens um die 40 Byte belegen (gerechnet ohne Strings). Bei mehreren zehntausend nehme ich mal 30.000 an und komme auf 1.320.000 Byte was so 1,3 MegaByte entspricht (und das als absolutes Minimum).

Somit passen hier auch die Aussagen insgesamt logisch nicht zueinander.

Aktuell kann es also auch nur unlogische Mutmassungen geben und da passt wohl am besten 42
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
Benutzerbild von himitsu
himitsu

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

AW: Objektliste sprengt RAM (32-bit)

  Alt 13. Jul 2016, 09:47
Hab ich das überlesen, oder wurde nicht gesagt wo es knallt?

* Erstellen eines neuen Datenobjekts
* Laden der Daten, die in das neue Objekt rein sollen
* Befüllen des Datenobjekts
* Hinzufügen des Objekts zur Liste

Beim Hinzufügen muß eventuell die komplette Liste kopiert werden, wenn sich der Speicher nicht inplace vergrößern lässt,
aber für "mehrere 10000 Objekte" sollten dafür keine 150 KB an freiem zusammenhängendem Speicher nötig sein.

Festplatte ... Text als ANSI und im RAM als Unicode = doppelt so viel, plus je paar Byte für die Verwaltung/Alignment.

FastMM ... seit Delphi 2006? ist das schon eingebaut (in einer "leicht" abgespeckten Version)
Und wenn du aber eine eigene "externe" Version einbindest, dann hat ReportMemoryLeaksOnShutdown keine Wirkung, da es nur den internen FastMM steuert.
Der externe FastMM wird über seine Options.inc bedient.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (13. Jul 2016 um 10:11 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.049 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#7

AW: Objektliste sprengt RAM (32-bit)

  Alt 13. Jul 2016, 14:51
Callstack der Exception?

Out of memory exceptions kommen nicht nur, wenn wirklich kein Speicher mehr da ist.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Jens01

Registriert seit: 14. Apr 2009
673 Beiträge
 
#8

AW: Objektliste sprengt RAM (32-bit)

  Alt 13. Jul 2016, 14:58
Zitat:
Out of memory exceptions kommen nicht nur, wenn wirklich kein Speicher mehr da ist.
Ich habe ein "System-Explorer" mitlaufen. Da kann ich eigentlich gut verfolgen, wie die Rambelegung hochläuft, wenn die Liste gefüllt wird. Ich habe das Problem zurvor auch schon eingekreist, zB indem ich Teile der Liste per Stream auf der Festplatte ausgelagert habe. Dann funktionierte es ohne Fehler. (Die Liste wird in Schüben gefüllt.)
Achtung: Bin kein Informatiker sondern komme vom Bau.
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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:13 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