AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi C++ Fehler: Für diesen Befehl ist nicht genügend Speicher verfügbar.
Thema durchsuchen
Ansicht
Themen-Optionen

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

Offene Frage von "Zacherl"
Ein Thema von Michaell · begonnen am 12. Mär 2018 · letzter Beitrag vom 15. Mär 2018
Antwort Antwort
Seite 5 von 6   « Erste     345 6      
Michaell

Registriert seit: 17. Aug 2015
Ort: Bayern
47 Beiträge
 
Turbo C++
 
#41

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

  Alt 14. Mär 2018, 14:44
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).
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

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

  Alt 14. Mär 2018, 16:00
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.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#43

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

  Alt 14. Mär 2018, 16:11
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.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#44

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

  Alt 14. Mär 2018, 17:10
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:
vmmap.jpg
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#45

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

  Alt 14. Mär 2018, 19:36
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 ?!
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

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

  Alt 14. Mär 2018, 19:53
Ich glaub du hast die Dokumentation falsch verstanden.

Beide Parameter auf $FFFFFFFF aka MAX-1 ist nicht MAXIMAL, sondern es ist NICHTS.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#47

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

  Alt 14. Mär 2018, 19:57
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.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

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

  Alt 14. Mär 2018, 20:15
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
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (14. Mär 2018 um 20:20 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#49

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

  Alt 14. Mär 2018, 20:35
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?
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#50

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

  Alt 14. Mär 2018, 21:47
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 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
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 5 von 6   « Erste     345 6      

 

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 12:18 Uhr.
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