Aaalsooo...
Unter 32bit habe ich mal 4 Varianten versucht, bis Out of Memory kam:
Debug,
IDE, 97.059, 1.946,2 MB
Debug, EXE, 97.125, 1.947,8 MB
Release,
IDE, 97.498, 1.955,0 MB
Release, EXE, 97.498, 1.955,2 MB
Also ob Debug oder Release bzw. unter
IDE-Kontrolle oder nicht spielt keine Rolle.
Unter 64bit (Debug,
IDE) habe ich mal 600.000 Mainobjekte erzeugt.
Bei ca. 5GB hat Windows scheinbar immer Daten ausgelagert und dann wieder weitere Objekte erzeugt.
Keine Ahnung, was da genau passiert.
Zumindest sollte man den Speicherverbrauch wohl nicht so hoch treiben, da die Anwendung sonst ausgebremst wird.
(Alles nur mein erster Eindruck.)
Dann bin ich zurück auf 32bit und habe die gleichen Strings durch Referenzen auf existierende Interfaces ersetzt und dachte, das würde eine deutlich höhere Anzahl von MainObjekten ermöglichen. Das Gegenteil war der Fall.
Es waren nur noch 92.539!?
Kann sein, dass es heute zu spät für mich ist. Das schaue ich mir am WE noch näher an.
Aber ich habe mir auch mal die gesamten Datenobjekte ausgeben lassen
92.480 Mainobjekte -> 1.942.058 Gesamtobjekte
Die Mainobjekte haben also durchschnittlich 20 Unterobjekte und insgesamt sind es fast 2Mio.
Das sind also schon ein paar, aber die Speicherbedarfsreduzierung bleibt auf jeden Fall ein Ziel von mir.
Dann bin ich zurück zu den Strings von vorher (alte Sicherung verwendet).
Die Objekte blieben bei 92540->1943318 obwohl es am Anfang ja 97.000 waren.
Nach einem PC-Neustart waren es noch weniger:
91348->1918214
Also die Gründe für diese Schwankungen kann ich mir nicht erklären.
Vielleicht muss man einfach damit leben.
Warum die Änderung auf Objektreferenzen statt den Strings nichts brachte oder sogar kontraproduktiv war, ist mir rätselhaft.
(Ein Fehler meinerseits kann hier ggf. allerdings auch möglich sein.)