Qu'est-ce qui pourrait expliquer la différence d'utilisation de la mémoire rapportée par FastMM ou GetProcessMemoryInfo?

StackOverflow https://stackoverflow.com//questions/9704786

Question

My Delphi Xe Application est basé sur un seul exe utilisant une DLL de serveur local créé par Remobjects et utilise beaucoup de mémoire pour une opération spécifique jusqu'à ce qu'il génère une exception en disant qu'il n'y a pas assez de mémoire. Donc, j'essaie de comprendre pourquoi et où cela se passe donc, j'ai placé diverses étapes tout au long de mon code sur lequel je signale l'utilisation de la mémoire. Le problème est que je reçois des informations très différentes en fonction de la méthode utilisée pour obtenir des informations d'utilisation de la mémoire:

  1. Si j'utilise la méthode expliqué ici qui demande directement FastMM directement pour la DLL du client et serveur, voici ici Ce que je reçois:

    • Étape 1: [Client]= 36664572 - [serveur]= 3274976
    • Étape 2: [Client]= 62641230 - [serveur]= 44430224
    • Étape 3: [Client]= 66665630 - [Serveur]= 44430224
  2. Maintenant si j'utilise la méthode expliqué ici qui utilise getProcessMemoryInfo, je reçois beaucoup plus d'utilisation de la mémoire: < / p>

    • Étape 1: [Processus]= 133722112
    • Étape 2: [Processus]= 1072115712
    • Étape 3: [Processus]= 1075818496
  3. On dirait que la deuxième méthode est la droite basée sur mes problèmes de mémoire, mais comment la méthode FastMM pourrait-elle être si "faible"? Et qu'est-ce qui peut expliquer la différence?

Était-ce utile?

La solution

getProcessMemoryInfo signale également la mémoire qui n'est pas gérée par FastMM, comme la mémoire qui est attribuée par les différentes dlls non delphes que vous pourriez appeler (comme Winapi).

aussi Fastmm peut également allouer plus de mémoire de Windows utilisée par votre application pour les structures internes, la fragmentation et la mise en commun.

et comme en dernier, avec getProcessMemoryInfo vous mesurez la taille du travail.C'est la partie intégrante de la mémoire de la demande dans la RAM à la place si dans le fichier de page.Il comprend plus que des structures de données et ne sont définis définitivement pas à la mémoire totale que l'application a été attribuée.La pageFileSage serait plus comparable.La taille de l'ouvrage n'est presque jamais ce que vous recherchez.Voir ici pour une meilleure explication.

Alors, ils donnent tous deux des résultats différents parce qu'ils mesurent tous les deux des choses différentes.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top