Größe des Arbeitsspeichers



  • Nun das verstehe ich jetzt nicht ganz. Du willst die Grösse des Arbeitsspeichers abfragen weil du Angst hast dein Bild sei zu gross? Was ist das denn für ein Bild? 😕



  • flenders schrieb:

    GlobalMemoryStatusEx?!

    Vielen Dank. Es sieht so aus:

    MEMORYSTATUS stat;
    GlobalMemoryStatus( &stat );

    und in der Struktur enthält die notwendige Information

    typedef struct _MEMORYSTATUS {
    DWORD dwLength;
    DWORD dwMemoryLoad;
    DWORD dwTotalPhys;
    DWORD dwAvailPhys;
    DWORD dwTotalPageFile;
    DWORD dwAvailPageFile;
    DWORD dwTotalVirtual;
    DWORD dwAvailVirtual;
    } MEMORYSTATUS, *LPMEMORYSTATUS;



  • Zyklop schrieb:

    Nun das verstehe ich jetzt nicht ganz. Du willst die Grösse des Arbeitsspeichers abfragen weil du Angst hast dein Bild sei zu gross? Was ist das denn für ein Bild? 😕

    Hallo.
    Das sind die Bilder, die durch Sensoren-, Kamera-, Ultraschall- oder Magnet-Resonanz-Aufnahmen gewonnenen sind. Besonders groß sind Magnet-Resonanz-Aufnahmen, die können bis zu 1GB oder sogar größer sein. Diese Bilder sind
    nicht direkt für eine nachfolgende Bearbeitung geeignet. Während der Verarbeitung wird eine Reihe von Zwischenbildern erzeugt. Die brauchen auch
    Speicher.



  • Ja und? Windows wird dann eben anfangen auszulagern. Oder wie meinst du schafft es Windows sonst jedem Prozess 4 GB an Adressraum bereitzustellen?



  • Luckie schrieb:

    Ja und? Windows wird dann eben anfangen auszulagern. Oder wie meinst du schafft es Windows sonst jedem Prozess 4 GB an Adressraum bereitzustellen?

    Ja, es ist richtig. Trotzem will ich nicht mit meinem Demoprogramm, das nur
    dem Vörführungszweck dient, große Bilder zu verarbeiten, da es ewig dauern kann.



  • Die Frage ist doch, ob du die ganze Datei in den Arbeitsspeicher legen musst. Sondern nur Teile der Datei.



  • dynamo schrieb:

    Luckie schrieb:

    Ja und? Windows wird dann eben anfangen auszulagern. Oder wie meinst du schafft es Windows sonst jedem Prozess 4 GB an Adressraum bereitzustellen?

    Ja, es ist richtig. Trotzem will ich nicht mit meinem Demoprogramm, das nur
    dem Vörführungszweck dient, große Bilder zu verarbeiten, da es ewig dauern kann.

    Dann sperr doch einfach die Funktion oder leg keine großen Bilder bei. Oder meist du es macht einen besseren Eindruck, wenn das Programm mit der Meldung: "Nicht genug Arbeitsspeicher" den Dienst verweigert? Und wie willst du bestimmen, ob noch "genug", was auch immer du darunter versteht, Speicher zur Verfügung steht? Du bekommst raus, dass der Rechner 512 MB Ram hat, davon sind 384 MB frei und jetzt? Das 1 GB Bild wirst du trotzdem ohne Probleme laden können, weil eben ausgelagert wird und sowieso nur Teile geladen werden. Klar das dauert länger, weil Lese- und Schreibzugriffe auf die Festplatte so ziemlich das langsamste sind. Aber je dandem, wie vile Arbeitsspeicher noch frei ist, kan dir das auch bei einem 512 KB Bild passieren. Und wenn du keine MemoryLeaks drinne hast, wirst du es auch bearbeiten können. Wie fix das geht hängt von der CPU , dem verfügbaren Arbeitsspeicher und der momentanen Auslastung durch andere Prozesse ab.

    Mach dir jetzt noch mal Gedanken, ob das so sinnvoll ist was du da vor hast.

    Lieber eine langsame Demonstration, als gar keine würde ich da sagen. Und was bringt es dir, wenn sich dann der Kund ebeschwert, dass es bei im so loangsam läuft, weil du ihm bei der Demonstartion die großen Bilder vorenthalten hast, sie aber in der Praxis an der Tagesordnung sind?

    Und wenn es nur um die Demonstartion der Filter etc. geht, dann nimm doch kleine Bilder vom Format her.

    Das sind die Bilder, die durch Sensoren-, Kamera-, Ultraschall- oder Magnet-Resonanz-Aufnahmen gewonnenen sind. Besonders groß sind Magnet-Resonanz-Aufnahmen, die können bis zu 1GB oder sogar größer sein.

    Aber doch bestimmt kein Bild vcon 250 x 250 Pixel.



  • Luckie schrieb:

    dynamo schrieb:

    Luckie schrieb:

    Ja und? Windows wird dann eben anfangen auszulagern. Oder wie meinst du schafft es Windows sonst jedem Prozess 4 GB an Adressraum bereitzustellen?

    Ja, es ist richtig. Trotzem will ich nicht mit meinem Demoprogramm, das nur
    dem Vörführungszweck dient, große Bilder zu verarbeiten, da es ewig dauern kann.

    Dann sperr doch einfach die Funktion oder leg keine großen Bilder bei. Oder meist du es macht einen besseren Eindruck, wenn das Programm mit der Meldung: "Nicht genug Arbeitsspeicher" den Dienst verweigert? Und wie willst du bestimmen, ob noch "genug", was auch immer du darunter versteht, Speicher zur Verfügung steht? Du bekommst raus, dass der Rechner 512 MB Ram hat, davon sind 384 MB frei und jetzt? Das 1 GB Bild wirst du trotzdem ohne Probleme laden können, weil eben ausgelagert wird und sowieso nur Teile geladen werden. Klar das dauert länger, weil Lese- und Schreibzugriffe auf die Festplatte so ziemlich das langsamste sind. Aber je dandem, wie vile Arbeitsspeicher noch frei ist, kan dir das auch bei einem 512 KB Bild passieren. Und wenn du keine MemoryLeaks drinne hast, wirst du es auch bearbeiten können. Wie fix das geht hängt von der CPU , dem verfügbaren Arbeitsspeicher und der momentanen Auslastung durch andere Prozesse ab.

    Mach dir jetzt noch mal Gedanken, ob das so sinnvoll ist was du da vor hast.

    Lieber eine langsame Demonstration, als gar keine würde ich da sagen. Und was bringt es dir, wenn sich dann der Kund ebeschwert, dass es bei im so loangsam läuft, weil du ihm bei der Demonstartion die großen Bilder vorenthalten hast, sie aber in der Praxis an der Tagesordnung sind?

    Und wenn es nur um die Demonstartion der Filter etc. geht, dann nimm doch kleine Bilder vom Format her.

    Das sind die Bilder, die durch Sensoren-, Kamera-, Ultraschall- oder Magnet-Resonanz-Aufnahmen gewonnenen sind. Besonders groß sind Magnet-Resonanz-Aufnahmen, die können bis zu 1GB oder sogar größer sein.

    Aber doch bestimmt kein Bild vcon 250 x 250 Pixel.

    doch,
    512x512, 640x480, 725x700



  • Ein 512x512 Pixel Bild kann eine Größe von einem GB haben? Was ist das für ein Format? Ein 16 Bit Bitmap hätte da mal gerade 262 MB.

    Übrigens geil, du zitierst meine ganzen Beitrag nur um dich auf den letzten Satz zu beziehen. 😃



  • Übrigens geil, du zitierst meine ganzen Beitrag nur um dich auf den letzten Satz zu beziehen.

    Ein Anfänger eben...



  • Genosse Luckie, ein Bild von 512x512 Pixel hätte die Größe:

    512*512*2(Byte) = 512 KB und nicht 262 MB.

    Was der Kollege dynamo meint ist wahrscheinlich die Situation, in der ich ein RGB-Bild habe (also 3 Kanäle) und mit reelen Zahlen arbeite. Hinzu kommt noch, das ich in der Algorithmik mehrere Bilder gleichzeitig im Speicher halten muss.Sagen wir - 8 Stück. Dann ist der Speicherverbrauch:

    8 Bilder * 2000 (Pixel) * 3000 (Pixel) * 3 (Kanäle) * 4 Byte (float) = 549 MB

    Soviel Speicher brauche ich, um die Algorithmen auszuführen, dazu kommt noch Speicherverbrauch für die Anzeige:

    8 Bilder * 2000 (Pixel) * 3000 (Pixel) * 3 (Kanäle) * 1 Byte (unsigned char) = 137 MB

    Insgesamt brache ich also bei einem nicht besonders grosen Bild (2000x3000) 686 MB...


Anmelden zum Antworten