1

Je voudrais savoir s'il est possible de déclarer explicitement quel type de mémoire (mémoire physique ou virtuelle) doit être utilisé par l'application C# pour effectuer différentes actions? Permettez-moi de l'expliquer par un exemple:Contrôle manuel de l'allocation de mémoire en C#

Disons, j'ai un fichier d'environ 100 ou 200 Mo de taille. J'ai besoin d'analyser ce fichier, accéder et analyser son contenu et effectuer des opérations sur le contenu du fichier. Serait-il possible pour moi de stocker spécifiquement le fichier entier et son contenu sur la mémoire virtuelle au lieu de la mémoire physique?

Si cela est possible, y a-t-il des effets secondaires/précautions à prendre en compte? La raison de ma question est que je dois souvent faire face à de tels fichiers ou ensembles de données (récupérés à partir de bases de données) et y effectuer des opérations dont une partie n'a pas besoin d'être séquentielle ni synchronisée. Je veux améliorer le temps d'exécution et les performances de l'application en parallélisant les parties non séquentielles, si possible.

+1

Vous pouvez utiliser des fichiers mappés en mémoire pour cela, mais le contrôle de l'endroit où vous chargez réellement les objets en mémoire est hors de votre contrôle. –

Répondre

2

Généralement vous n'avez pas (et ne devriez pas avoir besoin de) avoir un aperçu de la façon dont la mémoire physique est gérée. Dans Windows et donc dans le CLR, tout est de la mémoire virtuelle.

Sauf si vous avez un problème spécifique, vous devriez simplement prétendre que tout est de la mémoire physique.

Vous pouvez compter sur le système d'exploitation pour déterminer intelligemment ce qui doit être conservé dans la mémoire physique et ce qui peut être échangé. L'échange ne se produit que s'il y a une pression de mémoire de toute façon, c'est-à-dire si vous allouez plus de mémoire que ce qui est physiquement disponible.

De plus, 100-200 Mo ne sont pas si nombreux de nos jours.

2

mémoire physique ou virtuelle

Vous ne pouvez pas réellement lire de la mémoire virtuelle. Lorsque vous tentez de cela provoque une erreur de page et le système d'exploitation fera un page swap et ramener cette mémoire virtuelle dans la mémoire physique. Donc vous lisez seulement de la mémoire physique. Lors de l'échange d'une page, il va échanger une page de la RAM qui n'a pas été utilisée récemment. Du point de vue de l'application, il semble que tout est dans la mémoire physique. Vous n'avez pas besoin de vous préoccuper de ce que les pages sont dans ou hors de la mémoire physique, le système d'exploitation va gérer cela.