J'utilise Delphi 2007, il y a donc une limite de mémoire disponible de 32 bits.Obtenir de la mémoire disponible pour un processus
Utilisation du drapeau IMAGE_FILE_LARGE_ADDRESS_AWARE
PE, il devrait y avoir une limite de 3 Go au lieu de 2 Go:
{$SetPEFlags IMAGE_FILE_LARGE_ADDRESS_AWARE} // Allows usage of more than 2GB memory
Ceci est la méthode que j'utiliser pour obtenir l'utilisation actuelle de la mémoire du processus:
function MemoryUsed: Int64;
var
PMC: _PROCESS_MEMORY_COUNTERS_EX;
begin
Win32Check(GetProcessMemoryInfo(GetCurrentProcess, @PMC, SizeOf(PMC)));
Result := PMC.PrivateBytes;
end;
Maintenant, je veux un moyen d'obtenir la quantité totale de mémoire disponible pour le processus. Il devrait être d'environ 3 Go. Mais je ne veux pas le coder en dur, car dans l'avenir nous allons passer à Delphi et 64 bits.
Quelle fonction API Win32 dois-je utiliser?
Mémoire disponible - Mémoire disponible pour ordinateurs - Peut-être 8 Go de RAM sont-ils installés. Si plus est nécessaire le système d'exploitation commence à échanger la mémoire sur le disque.
Mémoire disponible du processus - Une limitation dans l'exécutable et Windows. Maintenant, la plupart des Windows est 64 bits, ce qui n'est pas un problème. Mais si l'exécutable est compilé en 32 bits avec IMAGE_FILE_LARGE_ADDRESS_AWARE
, la limite devrait être de 3 Go, n'est-ce pas? Lorsque l'exécutable est 64 bits, il sera beaucoup plus grand, peut-être 64 Go (mais l'échange peut se produire si la RAM installée est inférieure ...). Donc, ma question est, comment puis-je obtenir la mémoire disponible du processus?
Définissez la mémoire disponible s'il vous plaît. Votre processus peut utiliser l'espace d'adressage complet de 4 Go sur votre système 64 bits. Il est capable d'allouer tout l'espace qui n'est pas actuellement réservé, donner ou prendre. Qu'allez-vous faire avec l'information de toute façon? –
J'essaie de clarifier la question –
Donc, c'est la quantité d'espace d'adressage que vous voulez. Il est soit 2, 3 ou 4. Très peu probable d'être 3. Vous ne trouverez pas beaucoup de systèmes 32 bits démarrés avec le commutateur/3gb ces jours-ci. –