Pour que les choses soient claires, je vous mets l'article original sur la gestion de la mémoire pour 9x/ME, je traduis comme je peux.
http://aumha.org/a/memmgmt.htm
IMPROVEMENTS IN WIN98/ME VCACHE
Foremost among the improvements in Win98/ME memory management are the changes in VCache. Simply put, the VCache is used (among other functions) to store previously used code and data that Windows thinks might be needed again. If the code or data is just flushed from memory, but is then needed again, it has to be read anew from the hard drive when it is again needed. Reading from the hard drive is much slower than finding the code or data already in RAM. Some code is used quite often. If it has to be read from the hard drive over and over again, this would slow down performance considerably. The VCache concept is that, as long as there is unused RAM sitting about, we should just cache information in it that we might need again. (There is smart code that makes decisions about what to keep, how long to keep it, etc.; this has all been taken into consideration and is not particularly important to the present discussion.) Then, since this is only a "just in case" cache, if the RAM is needed for something else, part of the VCache contents are flushed and the RAM is made available.
One improvement in VCache management in Win98/ME over Win95 is that Win95 had a bug that kept VCache from releasing RAM when it was needed. VCache would just keep growing sometimes, and the amount of available RAM would diminish accordingly, forcing more swap file activity (using the hard drive as a substitute for RAM). This is the famous "memory leak" of Win95. The user's solution in Win95 was to put MinFileCache and MaxFileCache lines in the [vcache] section of the SYSTEM.INI file to control the size of VCache. This was sometimes a great help (especially on the 12 MB, 16MB, and 32MB systems which were the vogue in Win95's heyday). But, in Win98, this problem was fixed (with further improvements in Windows 98 Second Edition, that carried over into WinME), and these [vcache] lines are not needed. Not only are they not needed, they actually get in the way in Win98/ME. In Win95 they improved performance, but in Win98/ME they decrease performance, because of a second improvement that was made in memory management for Win98 - to be discussed in a moment.
But first, THREE EXCEPTIONS TO THE FOREGOING:
EXCEPTION No. 1: For systems with more than 128 MB of RAM, setting a VCache maximum of about 70% of your total RAM is recommended as prophylaxis against run-away VCache growth in rare, specialized situations. (A tip of the hat to MS-MVPs Ron Martell, Ovidiu Popa, and Alex Nichol for months of experimentation and documentation of these details and recommendations.)
EXCEPTION No. 2: VCache increasing above 512 MB can create serious memory handling problems. If you have more than 512 MB of RAM, a VCache maximum of 524,288 KB (or a little less) is recommended. This is obtained by adding a MaxFileCache=x entry in the [vcache] sectin of SYSTEM.INI, where x is the maximum value you wish to set. VCache is limited internally to a maximum cache size of 800 MB. The problem is that, on computers with large amounts of RAM, the maximum VCache size can be large enough that it consumes all of the available addresses in the system arena, leaving no virtual memory addresses available for other functions such as opening an MS-DOS prompt. This problem may occur more easily if you have an AGP video adapter: The AGP aperture is also mapped to addresses in the system arena, and if VCache is using its entire 800 MB allowance and an AGP video adapter has a 128 MB aperture mapped, there will be very little address space remaining for other system code and data that must occupy the available range of virtual addresses.
EXCEPTION No. 3: For systems with more than 1 GB of RAM, the defaults in Windows 98 or ME can cause continuous rebooting of the computer, or to hangs or serial reboots during the Windows upgrade process. To resolve this problem, add a MaxPhysPage=40000 entry in the [386enh] section of SYSTEM.INI. This effectively limits the amount of RAM Windows can access to 1 GB. (Microsoft limits ths recommendation to systems having more than 1.5 GB of RAM, but the solution is to roll it back to 1 GB. See {MSKB Q304943}.) Microsoft has now flatly stated that, "Windows Me and Windows 98 are not designed to handle more than 1 GB or RAM. More than 1 GB can lead to potential system instability."
The second improvement is that Windows can now execute code or access data directly from VCache. In Win95, this was not possible. If code was stored in VCache, it had to be passed to another part of RAM before it could be executed. This was still much faster than reading it again from the hard drive, but, nonetheless, took a small amount of time. In Win98/ME, it does not have to be moved to another part of RAM - it can be run directly from VCache itself. This saves a bit of time.
Quand je tronque, je mets ceci [8<]
Améliorations dans le VCache de Win9x/ME
Les plus importantes améliorations concernant la gestion mémoire concernent les changements du VCache. En résumé, VCache est utilisé (entre autres) pour stocker du code et des données déjà utilisés et dont Windows peut penser qu'il en aura encore besoin. [8<] Le concept du VCache est que, tant qu'il y a de la RAM inutilisée, autant y stocker des informations qui pourraient servir. (Il y a un code intelligent (?) qui détermine ce qu'il faut garder et combien de temps il faut le garder). Ensuite, comme il s'agit seulement de données "au cas où", si la RAM est sollicitée pour quelque chose d'autre, une partie du VCache est vidée pour rendre la RAM disponible.
Une des améliorations du VCache en 98/ME par rapport à 95 est la résolution du bug sous 95 qui faisait en sorte que VCache ne libérait pas la RAM quand 95 en avait besoin et VCache grandissait, diminuant par la même occasion la partie de RAM libre et forçant l'activité du fichier Swap. C'est la fameuse "fuite de mémoire" de Win95. La solution était de mettre MinFileCache et MaxFileCache dans le System.ini pour contrôler la taille du VCache. C'était parfois très utile, surtout pour des PC avec 12, 16 et 32 MB de RAM. Sous Win98, le problème a été réglé (avec d'autres améliorations pour 98SE, transposée sous ME) et il n'est pas nécessaire d'utiliser les paramètres VCache. Non seulement ce n'est pas utile mais ça pourrait même provoquer une chute de performance à cause d'une autre amélioration dans la gestion mémoire.
Mais d'abord, 3 EXCEPTIONS au sujet de ce qui précède.
EXCEPTION 1 : pour les PC de plus de 128 MB (lisez minimum 160 MB jusqu'à 512 MB), mettre VCache à 70 % de la valeur totale de votre RAM est recommandé pour éviter une fuite en avant du VCache dans quelques rares situations. [8<]
EXCEPTION 2 : VCache augmentant au-delà de 512 MB peut créer de gros problèmes de gestion mémoire. Si vous avez plus de 512 MB de RAM (lisez au moins 640 MB), une valeur maximale de VCache égale à 500000 KB (voire un peu moins) est recommandée. [8<]. VCache est limité en interne par Windows à 800 MB. Le problème avec les PC ayant beaucoup de RAM, c'est que la taille du VCache peut être tellement grande qu'il consomme toutes les adresses mémoire dans l'arène (?) système (je pense qu'il a voulu dire area et pas arena, c'est donc zone), en ne laissant aucune adresse de mémoire virtuelle disponible comme par exemple, l'ouverture du Prompt MS-DOS. Ce problème peut se produire plus facilement si vous avez une carte graphique AGP : l'ouverture (?) AGP est aussi mappée dans les adresses du système et si le VCache utilise ses 800 MB autorisés et que l'AGP a ses 128 MB mappés, il va rester très peu d'adresses libres pour du code et des données qui doivent alors occuper de la place dans la mémoire virtuelle.
EXCEPTION 3 : Pour les systèmes avec plus d'un 1 GB de RAM, il se peut que 98/ME provoquent un reboot continuel du PC, des plantages ou des reboots en série lors d'un upgrade de Win. Pour résoudre ce problème, il faut rajouter une entrée MaxPhysPage=40000 dans la section [386enh] du system.ini. Ce paramètre limite la quantité de RAM disponible que Win peut accéder à un 1 GB. MS préconise de mettre ce paramètre pour ceux qui ont 1.5 GB de RAM mais la solution est de le mettre déjà pour les systèmes avec un 1 GB. Voir ici : http://support.microsoft.com/suppo [...] 4/9/43.ASP
MS reconnaît que "WinME/9x n'ont pas été conçu pour gérer plus de 1 GB de Ram. Plus de 1 GB de Ram peut causer l'instabilité du système."
la seconde amélioration du VCache est que Windows peut exécuter du code (lisez un programme) directement dans le VCache, ce qui n'était pas possible en Win95. [8<]. Win98/ME ne doivent plus déplacer le bout de programme du VCache vers une autre adresse mémoire pour l'exécuter, cela sauve un peu de temps à l'exécution.
Petite précision personnelle : MaxPhyspage est une limitation logicielle à la quantité de RAM qui n'a de sens (IMO) que si on utilise un autre OS que Win9X/ME, sans quoi, autant retirer la ou les barrettes qui font qu'on a plus de 1 GB. Les cas présentés en 1 et 2 ne sont là que par prévention ou lorsqu'on a des messages d'erreur indiquant qu'on n'a plus de RAM disponible. Ceci pour répondre à ceux qui disent qu'ils n'ont jamais vu ces recommendations, je peux vous dire que je parcours de nombreux forums francophones et anglophones et les gens qui ont 512 ou 768 MB de RAM sous 98 ont souvent des problèmes, justement parce qu'ils utilisent cette RAM avec des applications graphiques très lourdes ou de montage vidéo.
Pour conclure, vous remarquerez qu'il n'est fait nulle part mention de problème à partir de 128 MB de RAM. Windows 98/ME adressent jusqu'à 4 GB de RAM comme le dit Bellamy (2^32) et c'est pour d'autres raisons que l'adressage pur que Win déconne parfois. Ceci pour Mowjo qui persiste à croire qu'au-delà de 128 MB, ce sont les applications qui gèrent la RAM. Je te propose un petit test : charge des programmes en mémoire jusqu'à en avoir ± 120 MB (tu contrôles via sysmon). Puis, tu démarres un programme de 10 MB (genre Winword). On se retrouve à plus de 130 MB. Si on suit ta logique, comment expliques-tu que ce programme va tourner puisqu'il sera à cheval sur la frontière des 128 MB ? Windows va dire à Word "bon, les premiers mégas, c'est moi qui m'en occupe et toi, tu gères les mégas au-delà".
Un autre test plus simple : tu fais un programme en Visual Basic de 3 lignes où tu réserves de la mémoire via une instruction Dim. Qu'il y ait plus de 128 MB de RAM occupée à ce moment-là ou moins ne change rien, tu lances ton programme qui va va tourner de la même manière, tu ne lui as donné aucune directive pour soi-disant gérer toi-même la mémoire au-delà de 128 MB, je ne sais même pas comment faire d'ailleurs.
Désolé d'avoir été long mais je pense qu'il fallait un peu recentre le truc car ça partait dans tous les sens.
Pierre.