échange Définir la limite de mémoire de processus Windows(ou utilisateur)




taille fichier d échange windows 7 (4)

Utilisez les objets de travail Windows. Les tâches sont similaires aux groupes de processus et peuvent limiter l'utilisation de la mémoire et la priorité des processus.

Est-il possible de définir une limite de mémoire système qu'un processus peut utiliser dans Windows XP? J'ai quelques applications instables qui fonctionnent bien la plupart du temps, mais peuvent atteindre un bug qui entraîne une mémoire complète en quelques secondes (ou du moins je suppose que c'est ça). Cela entraîne une réinitialisation matérielle car Windows ne répond plus et je perds mon travail.

Je voudrais pouvoir faire quelque chose comme / etc / limits sur Linux - en définissant M90, par exemple (pour définir 90% de mémoire maximum pour un seul utilisateur à allouer). Donc, le système obtient les 10% restants, peu importe quoi.


Selon vos applications, il peut être plus facile de limiter la mémoire utilisée par l'interpréteur. Par exemple avec Java, vous pouvez définir la quantité de RAM que la JVM sera allouée.

Sinon, il est possible de le définir une fois pour chaque processus avec l'API windows

SetProcessWorkingSetSize, fonction


Pas moyen de faire cela que je sache, même si je suis très curieux de lire si quelqu'un a une bonne réponse. J'ai pensé à ajouter quelque chose comme ça à l'une des applications que mon entreprise construit, mais je n'ai trouvé aucun moyen de le faire.

La seule chose que je peux penser (bien que pas directement sur le point) est que je crois que vous pouvez limiter l'utilisation totale de la mémoire pour une application COM + dans Windows. Il faudrait que l'application soit écrite pour fonctionner dans COM +, bien sûr, mais c'est le moyen le plus proche que je connaisse.

L'ensemble d'éléments de travail est bon (les objets de travail contrôlent également les ensembles de travail), mais ce n'est pas l'utilisation totale de la mémoire, mais seulement l'utilisation réelle de la mémoire (paginée) à un moment donné. Cela peut fonctionner pour ce que vous voulez, mais cela ne limite pas la mémoire totale allouée.


Utilisez l'outil Application Verifier (AppVerifier) de Microsoft.

Dans mon cas, j'ai besoin de simuler la mémoire n'est plus disponible donc j'ai fait ce qui suit dans l'outil:

  1. Ajouté ma demande
  2. Uncecked Basic
  3. Vérification de la faible ressource vérifiée
    • Changement de TimeOut à 120000 - mon application fonctionnera normalement pendant 2 minutes avant que quelque chose entre en vigueur.
    • HeapAlloc modifié à 100 - 100% de chance d'erreur d'allocation de tas
    • Définissez Stacks sur true - la pile ne pourra pas être agrandie
  4. sauvegarder
  5. Démarrer ma demande

Après 2 minutes mon programme ne pouvait plus allouer de nouvelle mémoire et j'ai pu voir comment tout était géré.





memory