CORRECTIF : fuite de mémoire virtuelle avec un grand nombre de jeux d'enregistrements simultanément ouvrir

Traductions disponibles Traductions disponibles
Numéro d'article: 312575 - Voir les produits auxquels s'applique cet article
Cet article a été archivé. Il est proposé « en l'état » et ne sera plus mis à jour.
Agrandir tout | Réduire tout

Sommaire

Symptômes

Une application ou un service avec un grand nombre (plus de 500) simultanément jeux d'enregistrements ouverts (ActiveX Data Objects) qui est ouvert et fermé fréquemment pouvez constater une fuite de mémoire virtuelle qui mène à la fragmentation de mémoire et les erreurs de mémoire insuffisante.

Ce problème peut se produire dans n'importe quelle version de Microsoft Data Access Components (MDAC) entre 2.5 RTM (2.50.4403.12) et 2.6 SP1 (2.61.7326.6). Ce problème ne se produit pas dans MDAC 2.7.

Ce problème n'est pas spécifique au fournisseur ; il peut se produire avec le fournisseur natif SQL Server (SQLOLEDB.dll), le fournisseur Oracle natif (msdaora.dll), le fournisseur ODBC (msdasql.dll), le moteur de curseur client et un composant qui utilise le code de mémoire partagée.

Cause

Lorsque de jeux d'enregistrements est publiées, les routines de gestion de mémoire MDAC enregistrer la mémoire alloué pour eux dans une liste « aspect part » plutôt que réellement libérer la mémoire. Cela permet d'éviter la surcharge encourue par complètement libérer et réaffectation de mémoire.

Par défaut, le code de gestion de mémoire partagée utilisé par (Msdatl2.dll) MDAC 2.5 et MDAC 2.6 (Msdatl3.dll) enregistrera jusqu'à 500 de ces ventilations ; rien au-dessus de ce montant est libéré via des appels à la fonction VirtualFree .

Une erreur de code dans le code de gestion de mémoire effectue un appel incorrect à VirtualFree , afin que la mémoire n'est pas libérée réellement. Le code renvoyé par VirtualFree n'est pas activé et l'application ne reçoit aucune indication que la mémoire n'a fui.

Résolution

Pour résoudre ce problème, procurez-vous le dernier service pack pour Microsoft MDAC 2.5. Pour plus d'informations, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft :
293312INFO : Comment faire pour obtenir le dernier MDAC 2.5 Service Pack
La version anglaise de ce correctif doit avoir les attributs de fichier suivants ou ceux d'une version ultérieure :

MDAC 2.5 Service Pack 2
   Date          Version      Size      File name     
   -------------------------------------------------
   25-Oct-2001   2.52.8025.0   78,096   Msdatl2.dll		
   25-Oct-2001   2.52.8025.0   53,520   Msdatt.dll		
   25-Oct-2001   2.52.8025.0  303,376   Msdasql.dll	
   25-Oct-2001   2.52.8025.0   16,384   Msdasqlr.dll
   15-Nov-2001                          Q312575_MDAC25_SP2_x86_en.exe
				
pour MDAC 2.5 uniquement : Pour résoudre ce problème, procurez-vous le dernier service pack Windows 2000. Pour plus d'informations, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft :
260910 Comment faire pour obtenir le dernier Service Pack Windows 2000
MDAC 2.6 SP1
   Date          Version      Size      File name     
   -------------------------------------------------
   25-Oct-2001   2.61.8025.0   94,480   Msdatl3.dll	
   25-Oct-2001   2.61.8025.0   24,848   Msdatt.dll	
   25-Oct-2001   2.61.8025.0  307,472   Msdasql.dll	
   25-Oct-2001   2.61.8025.0   16,384   Msdasqlr.dll
   15-Nov-2001                          Q312575_MDAC26_SP1_x86_en.exe	
				

Contournement

Pour contourner ce problème, vous pouvez créer votre application ou un service afin que moins de 500 jeux d'enregistrements ouverts simultanément.

Vous pouvez atténuer le problème en réglant les paramètres suivants dans le Registre :
    HKLM\Software\Microsoft\MDAC         MaxReservedBlocks
    HKLM\Software\Microsoft\MDAC         ReservedMemorySize
				
Remarque que ces entrées de Registre n'existent pas par défaut ; vous devez ajouter manuellement puis. Les deux entrées sont des valeurs DWORD.

La valeur par défaut pour MaxReservedBlocks est 500. Si vous augmentez cette valeur, plusieurs blocs seront enregistrées dans part de l'aspect liste le Gestionnaire de mémoire (et sont entraîner donc plus Utilisation de la mémoire de l'application) mais les blocs sont réutilisées. Si vous réduire cette valeur, la fréquence à laquelle la mémoire est divulgué augmente.

La valeur par défaut pour ReservedMemorySize est 1 Mo. Vous pouvez réduire cette valeur pour limiter la taille des allocations de mémoire virtuelle ; toutefois, cela peut diminuer les performances si plus de mémoire est nécessaire à celle disponible dans les blocs de mémoire.

Statut

Microsoft a confirmé que c'est un problème dans les produits Microsoft répertoriés au début de cet article.

MDAC 2.5

Ce problème a été corrigé dans Microsoft MDAC 2.5 Service Pack 3. Ce problème a été corrigé dans Windows 2000 Service Pack 3.

Plus d'informations

Dans MDAC 2.5, les allocations de mémoire divulguée être est entièrement composé de mémoire réservé et n'aura aucune page validées ; par exemple :
08230000,      Private,    1048576,     1, -RW-,     
     08230000, Reserve,    1048576,,       -RW- --,
08330000,      Private,    1048576,     1, -RW-,     
     08330000, Reserve,    1048576,,       -RW- --,
08430000,      Private,    1048576,     1, -RW-,     
     08430000, Reserve,    1048576,,       -RW- --,
08530000,      Private,    1048576,     1, -RW-,     
     08530000, Reserve,    1048576,,       -RW- --,
				
dans MDAC 2.6, les allocations de mémoire divulguée va contenir au moins 10 Ko (65 536 octets) engagée pages ; par exemple :
1BF60000,      Private,    1048576,     2, -RW-,     
     1BF60000, Private,      65536,,       -RW- --,
     1BF70000, Reserve,     983040,,       -RW- --,
1C060000,      Private,    1048576,     2, -RW-,     
     1C060000, Private,      65536,,       -RW- --,
     1C070000, Reserve,     983040,,       -RW- --,
1C160000,      Private,    1048576,     2, -RW-,     
     1C160000, Private,      65536,,       -RW- --,
     1C170000, Reserve,     983040,,       -RW- --,
				
dans deux cas, surveillance de l'application ou le service avec l'Analyseur de performances affiche une utilisation excessive des octets virtuels.

Propriétés

Numéro d'article: 312575 - Dernière mise à jour: lundi 24 février 2014 - Version: 4.1
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft Data Access Components 2.5
  • Microsoft Data Access Components 2.5 Service Pack 1
  • Microsoft Data Access Components 2.5 Service Pack 2
  • Microsoft Data Access Components 2.6
  • Microsoft Data Access Components 2.6 Service Pack 1
Mots-clés : 
kbnosurvey kbarchive kbmt kbqfe kbhotfixserver kbmdac250sp3fix kbbug kbfix kbmdac260fix kbwin2000sp3fix KB312575 KbMtfr
Traduction automatique
IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d?articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d?avoir accès, dans votre propre langue, à l?ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s?exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s?efforce aussi continuellement de faire évoluer son système de traduction automatique.
La version anglaise de cet article est la suivante: 312575
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com