Delphi-PRAXiS
Seite 5 von 6   « Erste     345 6      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   C++ Fehler: Für diesen Befehl ist nicht genügend Speicher verfügbar. (https://www.delphipraxis.net/195586-fehler-fuer-diesen-befehl-ist-nicht-genuegend-speicher-verfuegbar.html)

Michaell 14. Mär 2018 13:44

AW: Fehler: Für diesen Befehl ist nicht genügend Speicher verfügbar.
 
Zitat:

Zitat von bra (Beitrag 1396045)
Es geht ja nicht darum, wieviel Speicher insgesamt zur Verfügung steht, sondern wieviel Speicher an einem Stück zur Verfügung steht. Wenn du zwar 2 Gb frei hast, aber alle 20 MB mal ein paar Byte stehen, bekommst du nie 300 MB am Stück unter. Da kannst du dich drehen und wenden soviel du willst. ...

Geht es noch, ja? Die Theorie mit dem fragmentierten Speicher kann hier gern so oft wiederholt werden bis sie richtig ist (das ich die verstanden habe geht aus meinen anderen Antworten hervor). Wenn ich trotz des angeblich ach so "riesigen Bitmaps (ca. 300 MiB war die letzte Abschätzung)" nur insgesamt 300 MiB belege (natürlich mit dem Bitmap) dann brauche ich wohl kaum ein weiteres zusammenhängendes 300 MiB Stück (für das Bitmap).

himitsu 14. Mär 2018 15:00

AW: Fehler: Für diesen Befehl ist nicht genügend Speicher verfügbar.
 
Du hast es wohl doch nicht ganz verstanden.
Und warum der angezeigte Speicher eventuell weniger anzeigt, als der [S]belegte[/A] reservierte Speicher wurde auch schon genannt.

Na egal, du bist der Meinung es geht jetzt, aber komm bitte nicht in einem halben Jahr wieder, wenn es erneut knallt. (oder lies dir dann wenigstens nochmal alles durch und beachte dann das Gesagte)
Ich bin nun hier raus. :hi:

KodeZwerg 14. Mär 2018 15:11

AW: Fehler: Für diesen Befehl ist nicht genügend Speicher verfügbar.
 
Also hier schreibt MSDN das was ich als Beispiel Code zu verdeutlichen versuchte.
Zitat:

The working set of a process is the set of memory pages in the virtual address space of the process that are currently resident in physical memory. These pages are available for an application to use without triggering a page fault.

Zacherl 14. Mär 2018 16:10

AW: Fehler: Für diesen Befehl ist nicht genügend Speicher verfügbar.
 
Liste der Anhänge anzeigen (Anzahl: 1)
Wenn trockene Werte es nicht schaffen dich zu überzeugen, hilft es vielleicht eine grafische Darstellung? Mit VMMap kannst du dir den virtuellen Speicher deines Prozesses anzeigen lassen und auch z.b. explizit nach freien Speicherblöcken filtern:

Hier sieht man unter anderem schön, dass die meisten Blöcke (alle bis auf einen) zu klein wären, um dein 300MiB Bitmap an einem Stück zu beinhalten:
Anhang 48655

KodeZwerg 14. Mär 2018 18:36

AW: Fehler: Für diesen Befehl ist nicht genügend Speicher verfügbar.
 
Ich bin schrecklich im Erklären, ich wollte darauf hinaus, mit diesem "working set", reserviert man sich virtuell Speicher, ob der physisch aus einem oder einer milliarde blöcken besteht ist damit hinfällig, wenn ich dein diagramm als beispiel nehme, könnte mein programm sich alle freien blöcke dazwischen zu eigen machen, virtuell hingegen ist es ein block. War das Verständlich genug formuliert, dafür gibt es doch diese funktion ?!

himitsu 14. Mär 2018 18:53

AW: Fehler: Für diesen Befehl ist nicht genügend Speicher verfügbar.
 
Ich glaub du hast die Dokumentation falsch verstanden.

Beide Parameter auf $FFFFFFFF aka MAX-1 ist nicht MAXIMAL, sondern es ist NICHTS.

KodeZwerg 14. Mär 2018 18:57

AW: Fehler: Für diesen Befehl ist nicht genügend Speicher verfügbar.
 
Die Größen (und Anwendung an sich) müssen natürlich an die Bedürfnisse angepasst werden, das ist nur der Rohbau meines Tests um diese Funktion hier vorzustellen, auch wenn viele sagen "Nein falsch, idiotisch usw.", ich vertrau da mal Microsoft.

himitsu 14. Mär 2018 19:15

AW: Fehler: Für diesen Befehl ist nicht genügend Speicher verfügbar.
 
Aber wie schon mehrmals erwähnt wurde, hat das WorkingSet (der physische RAM) keinen Einfluß auf die Belegung/Fragmentierung des virtuellen Speichers.

PS: Wenn jede Anwendung wahllos sich mehr physischen Speicher erzwingt, dann haben schnell alle anderen Programme und vor allem die Systemkomponenten schnell ein Problem und Windows raucht dir ab :zwinker:

KodeZwerg 14. Mär 2018 19:35

AW: Fehler: Für diesen Befehl ist nicht genügend Speicher verfügbar.
 
Also ich interpretiere das Working Set so:
Windows reserviert sich virtuellen Speicher für deine Anwendung.
Das ist ein block der eben eine Paging Fault (im physischem RAM) verhindern soll,
dieser block kann aus physischem oder ausgelagertem Speicher bestehen,
in beiden Fällen kann auch der virtuelle aus vielen physischen blöcken bestehen,
so kann man auch mehr Speicher anfordern als physisch überhaupt verbaut/noch frei ist,
die Ausführungsgeschwindigkeit ist dann natürlich lächerlich.
Ich hab Versucht jeden Aspekt in eine Zeile zu schreiben, in welcher irre ich mich?

Zacherl 14. Mär 2018 20:47

AW: Fehler: Für diesen Befehl ist nicht genügend Speicher verfügbar.
 
Ne, also das Working Set ist tatsächlich der (virtuelle) Speicher, der NICHT ausgelagert ist, also bei einem Zugriff kein Page Fault verursachen würde:
Zitat:

Zitat von MSDN
The working set of a process is the set of pages in the virtual address space of the process that are currently resident in physical memory

Siehe auch:
https://msdn.microsoft.com/de-de/lib...or=-2147217396


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:30 Uhr.
Seite 5 von 6   « Erste     345 6      

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