Düzeltme: büyük sayı aynı anda açık Recordset sanal bellek sızıntısı

Makale çevirileri Makale çevirileri
Makale numarası: 312575 - Bu makalenin geçerli olduğu ürünleri görün.
Bu makale arşivlenmiştir. "Olduğu gibi" sunulmaktadır ve bundan sonra güncelleştirilmeyecektir.
Hepsini aç | Hepsini kapa

Bu Sayfada

Belirtiler

Uygulama veya hizmet ile çok sayıda (birden çok 500) açılmış olan ve sık kapalı aynı anda açık ActiveX Data Objects (ADO) kayıt kümesi için yetersiz bellek hataları ve bellek parçalanma müşteri adayları, bir sanal bellek sızıntısı oluşabilir.

Bu sorun, Microsoft Data Access Components (MDAC) 2.6 SP1 2.5 RTM (2.50.4403.12) arasındaki herhangi bir sürümünde oluşabilir (2.61.7326.6). Bu sorun MDAC 2.7 oluşmaz.

Bu sorun, sağlayıcıya özgü değildir; yerel SQL Server sağlayıcısını (Sqloledb.dll), Oracle yerel sağlayıcısını (msdaora.dll), ODBC sağlayıcı (msdasql.dll), istemci imleç altyapısı ve paylaşılan bellek kodunu kullanan herhangi bir bileşeni oluşabilir.

Neden

Kayıt kümeleri yayımlandığında, MDAC Bellek Yönetimi yordamlarına gerçekten bellek boşaltma yerine, bunlar için "Görünüm yan" listesini ayrılan bellek kaydedin. Bu, tamamen boşaltmayı ve bellek yeniden ayırma sonucunda oluşan giderlerini önlemek için yapılır.

Varsayılan değer olarak, MDAC 2.5 (Msdatl2.dll) ve MDAC 2.6 (Msdatl3.dll) tarafından kullanılan paylaşılan bellek yönetimi kodu en çok 500, bu ayırmalardan kaydeder; bu tutarı üzerinden herhangi bir şey VirtualFree işlev çağrıları üzerinden serbest.

Bellek gerçekten yayımlanır, bellek yönetimi kodunda BIR kodlama hatası VirtualFree, yanlış bir ça?r? yapar. Dönüş kodu VirtualFree ' den işaretli ve bellek sızmasına bir gösterge uygulama alır.

Çözüm

Bu sorunu gidermek için <a0></a0>, Microsoft, MDAC 2.5 için en son hizmet paketini edinin. Ek bilgi için, Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
293312BILGI: son MDAC 2.5 nasıl elde edilir hizmet paketi
Bu düzeltmenin İngilizce sürümünde aşağıdaki dosya öznitelikleri veya üstü bulunur:

MDAC 2.5 SP2
   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
				
Için yalnızca MDAC 2.5:Bu sorunu gidermek için, en son Windows 2000 hizmet paketini edinin. Ek bilgi için, Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
260910En son Windows 2000 hizmet paketi nasıl elde edilir
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	
				

Pratik Çözüm

Bu soruna geçici bir çözüm bulmak için <a0></a0>, 500'den küçük bir kayıt kümesi aynı anda açık olan uygulama veya hizmetinizi tasarlayabilirsiniz.

Sorun aşağıdaki ayarları kayıt defterinde ayarlayarak zahmetinden:
    HKLM\Software\Microsoft\MDAC         MaxReservedBlocks
    HKLM\Software\Microsoft\MDAC         ReservedMemorySize
				
Not Bu kayıt defteri girdileri, varsayılan olarak bulunmaz; el ile eklemeniz gerekir. Her iki girişleri DWORD değerleridir.

MaxReservedBlocks için varsayılan değer 500'dür. Bu değeri artırmak daha fazla blok Bellek Yöneticisi'nin görünümünü yan listesinde kaydedilir (ve dolayısıyla daha fazla bellek kullanımı uygulamadaki tabi) ancak blokları yeniden kullanılabilir. Bu değeri daha düşük olursa, bellek sızmasına hızınızı artırır.

ReservedMemorySize için varsayılan değer 1 MB'dir. Sanal bellek ayırma boyutunu sınırlamak için bu değeri azaltabilirsiniz; ne belleğe bloklar halinde kullanılabilir farklı bellek gerekmiyorsa, Bununla birlikte, bu performansı düşürebilir.

Durum

Microsoft, bu makalenin başında listelenen Microsoft ürünlerinde bir sorun olduğunu onaylamıştır.

mdac 2.5

Bu sorun ilk olarak Microsoft MDAC 2.5 Service Pack 3'te giderilmiştir.Bu sorun ilk olarak Microsoft 2000 Service Pack 3'te düzeltilmiştir.

Daha fazla bilgi

MDAC 2.5, sızan bellek ayırmalarını tamamen ayrılmış bellek oluşur ve kaydedilmiş sayfa gerekir; örneğin:
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- --,
				
sayfaları gelen MDAC sızan bellek ayırmalarını, en az 10 KB (65536 bayt) içerecek 2.6 kaydedilmiş; örneğin:
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- --,
				
her iki durumda da, uygulama veya hizmet için performans izleyicisi ile izleme sanal bayt sayısını aşırı bir kullanımını gösterir.

Özellikler

Makale numarası: 312575 - Last Review: 24 Şubat 2014 Pazartesi - Gözden geçirme: 4.1
Bu makaledeki bilginin uygulandığı durum:
  • 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
Anahtar Kelimeler: 
kbnosurvey kbarchive kbmt kbqfe kbhotfixserver kbmdac250sp3fix kbbug kbfix kbmdac260fix kbwin2000sp3fix KB312575 KbMttr
Machine-translated Article
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:312575

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