2009-08-06 12 views
1

Lors de l'affichage d'un grand fichier mappé en mémoire dans une zone de défilement, est-il plus approprié que la vue représente le fichier entier ou uniquement la région du fichier en cours d'affichage?
Plus généralement, à quel niveau de l'abstraction la pagination est-elle effectuée avec les fichiers mappés en mémoire de .Net? La taille de la page/quantité de fichier stockée dans la mémoire est-elle liée à MemoryMappedViewAccessors ou est-elle indépendante de ces objets?Quelle est la manière la plus appropriée d'utiliser MemoryMappedViewAccessors de .Net 4.0?

Répondre

2

Il est indépendant; les données ne sont pas copiées dans la mémoire tant que l'adresse (ou une adresse proche) n'a pas été accédée. Cependant, la taille de la vue compte par rapport à l'espace d'adressage de votre processus. Ceci est très important sur les systèmes 32 bits puisque l'espace d'adressage du processus est limité à 2 ou 3 Go. Cela a un impact sur la capacité à effectuer des allocations futures en raison de la possibilité qu'un bloc contigu de la taille souhaitée ne soit pas disponible dans l'espace adresse.

La possibilité d'utiliser des vues volumineuses est souvent citée comme un avantage majeur des systèmes 64 bits.