Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Wieviel RAM ist im Delphi Programm verfügbar? (https://www.delphipraxis.net/141985-wieviel-ram-ist-im-delphi-programm-verfuegbar.html)

iphi 20. Okt 2009 09:51


Wieviel RAM ist im Delphi Programm verfügbar?
 
Hallo,

ich arbeite mit großen dynamischen Feldern.
Wie kann ich zur Laufzeit herausfinden, wie groß ich mein Feld machen darf, damit es gerade noch in das physikalische RAM passt, also kein Swappen auf die Festplatte stattfindet?

Danke und Gruß,
Thomas

sirius 20. Okt 2009 09:57

Re: Wieviel RAM ist im Delphi Programm verfügbar?
 
evtl hier: MSDN-Library durchsuchenGetPerformanceInfo

hoika 20. Okt 2009 09:57

Re: Wieviel RAM ist im Delphi Programm verfügbar?
 
Hallo,

gar nicht, geswappt wird immer, auch wenn du es nicht willst.

Ausserdem kann ich dein Programm öffnen,
das legt die Felder an
und ich mache danach Word auf ...


Heiko

himitsu 20. Okt 2009 10:07

Re: Wieviel RAM ist im Delphi Programm verfügbar?
 
Man kann, unter bestimmten Voraussetzungen, Speicher bei Windows anfordern, welcher wirklich nur im RAM liegt,
aber damit kann man das System so auslasten, daß am Ende nicht mehr genug auslagerbarer Speicher verfügbar ist und womöglich noch alles abstürzt.
Also für viele Daten ist es absolut nicht angesagt ... z.B. kleine Sachen für Treiber würden ja noch gehn.

Drum sag ich jetzt besser auch nicht wie man es machen könnte.


Um was für Daten handelt es sich denn,
wie groß ist groß bei dir
und warum DARF es nicht ausgelagert werden?

Womöglich gibt's ja 'ne bessere Lösung.

iphi 20. Okt 2009 11:24

Re: Wieviel RAM ist im Delphi Programm verfügbar?
 
Zitat:

Um was für Daten handelt es sich denn,
wie groß ist groß bei dir
und warum DARF es nicht ausgelagert werden?
Eigentlich kämpfe ich immernoch damit, einen Audiodatenstrom von einer Soundkarte garantiert unterbrechungsfrei aufzunehmen.

Ich möchte immer wieder ca. 1 Minute Audio aufnehmen und alle 3000 Samples eine Grafik updaten. Das funktioniert im Prinzip mit der MuktimediaAPI auch soweit.
Problem: Wenn der Nutzer während der Aufnahme Aktionen macht, die kurze CPU Lastspitzen erzeugen, kann es passieren, dass der Ausiodatenstrom Aussetzer aufweist. Ich habe festgestellt, dass dies deutlich seltener auftritt, wenn man vor dem Aufnahmestart dem Audiosystem den gesamten notwendigen Bufferspeicher zur Verfügung stellt, statt mit einem Rinbuffer zu arbeiten. Dafür werden aber halt ca. 10MB RAM-Speicher benötigt. Das ist normalerweise nicht viel, aber es wäre wünschenswert, abzufragen, ob die auch zur Verfügung stehen. In einem alten System mit 64MB Speicher könnte das ja mal knapp werden. Eine Auslagerungsaktion führt garantiert zu Aussetzern.

Vieleicht weiß jemand ja auch einen anderen Weg, den Audioaussetzern Herr zu werden.
(Ich weiß, die Frage gehört eigentlich ins Multimediaforum).

Gruß, Thomas

Bernhard Geyer 20. Okt 2009 12:15

Re: Wieviel RAM ist im Delphi Programm verfügbar?
 
Kann es sein das GUI-Aktualisierungen querschießt? Probier mal das Aufnehmen in einen Thread mit hoher Priorität zu verlagern.

iphi 20. Okt 2009 13:31

Re: Wieviel RAM ist im Delphi Programm verfügbar?
 
Zitat:

Probier mal das Aufnehmen in einen Thread mit hoher Priorität zu verlagern.
Nach meinem Verständnis startet Windows doch sowieso einen eigenen Aufnahme-Thread. Davon bekomme ich als API-Nutzer nur nichts mit.

Was würde sich ändern, wenn ich die Aufnahme aus einem Thread heraus starte?

Gruß,
Thomas

Bernhard Geyer 20. Okt 2009 13:32

Re: Wieviel RAM ist im Delphi Programm verfügbar?
 
Zitat:

Zitat von iphi
Was würde sich ändern, wenn ich die Aufnahme aus einem Thread heraus starte?

Das deine Operationen zum Aufnehmen nicht durch GUI-Aktualisierungen gestört werden.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:34 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