Trenutno ste van mreže; čekamo da se ponovo povežete na internet

Nedostatok pamäte výnimky v spravované aplikácie, ktorá je spustená v 64-bitové platformy .NET Framework

DÔLEŽITÉ: Tento článok je preložený pomocou softvéru na strojový preklad od spoločnosti Microsoft a možno ho opraviť prostredníctvom technológie Community Translation Framework (CTF). Microsoft ponúka strojovo preložené články, články upravené komunitou aj články preložené prekladateľmi, aby zabezpečil prístup ku všetkým článkom databázy Knowledge Base vo viacerých jazykoch. Strojovo preložené články aj upravené články môžu obsahovať chyby týkajúce sa slovnej zásoby, syntaxe alebo gramatiky. Microsoft nenesie zodpovednosť za akékoľvek nepresnosti, chyby alebo škody spôsobené neprávnym prekladom obsahu alebo jeho použitím zo strany našich zákazníkov. Ďalšie informácie o technológii CTF nájdete na lokalite http://support.microsoft.com/gp/machine-translation-corrections/sk.

Pokiaľ chcete vidieť anglickú verziu článku, kliknite sem: 3152158
Príznaky
Máte spravovanou aplikáciou orientovaný 4.6.1 64-bit Microsoft .NET Framework. Táto aplikácia hodí výnimku nedostatku pamäte od CLR nasledujúce konkrétne správy:

OutOfMemoryException: "nedostatok pamäte počas zadaného priestoru adries naďalej vykonanie program."
Príčina
Pamäte sa výnimka je obsiahnuté CLR, keď správca podsystém kód nemôže vyhradiť pamäť do konkrétneho priestoru adries pre skok výhonky. (Tieto odkazov výhonky zodpovedajú postup vyžaduje medzi dll, ktoré sú umiestnené 2 GB alebo viac okrem priestoru adries.) Musí byť priestor okruhu 2 GB volania metódy na ukladanie odkazov blok pre volania metódy 64-bit. Je bezpečný spôsob, ako obnoviť z tejto konkrétnej chyby aplikácie. Preto aplikáciu, keď sa vyskytne táto chyba je neznámy a považujeme poškodený. Jediným spôsobom, ako obnoviť je reštartujte aplikáciu.
Ako problém obísť
Tento problém obísť, použite jeden z nasledujúcich postupov nastavenie:
  • Vykonanie nastavenia počítač nasledujúci kľúč databázy registry a hodnoty:

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework

    NGenReserveForjumpStubs= dword:00000005

  • Vykonanie nastavenia na úrovni aplikácie pridaním (alebo zlúčenie) v nasledovnej časti konfiguračného súboru aplikácie:
    <configuration>    <runtime> <NGenReserveForJumpStubs value="5" />    </runtime></configuration>
Vysvetlenie: NGenReserveForJumpStubs spôsobuje CLR vyhradiť časť priestoru adries pre skok výhonky blízko každého NGen obrázku. Odporúča sa použiť hodnota 5 alebo vyššia, ak máte OutOfMemory výnimka.
Ďalšie informácie

Pre vývojárov

  • .NET Framework kóduje postup volania ako relatívna 32-bitové skokov dôvodov výkonu. Na 64-bitový systém, volajúci a volaný možno ďalej od seba ako 2 GB (priestor adries). Prekročený rozsah adries podpísané 32-bitový posun, .NET vytvorí blok odkazov do 2 GB volajúceho. Tento blok môže prejsť potom vykonajte "dlho" prejsť na ľubovoľné miesto v 64-bitového priestoru adries.
  • JIT a NGen mitigations pracovať inak. Obidva vyhradiť ďalšie adresy miesta vpredu, ale miesto, kde tento rezervácie sa líši medzi dvoma.
  • NGenReserveForJumpStubs je percento virtuálne NGen obrázok veľkosť (percentReserveForJumpStubs).
  • Blok typický odkazov je 12 bajtov. Ďalšie informácie nájdete v téme JUMP_ALLOCATE_SIZE.
  • Pamäť pridelená a vyhradené blízko adresu, kde bol nahraný NGen obraz (presný algoritmus je EEJitManager::EnsureJumpStubReserve). Pamäť venuje, keď je potrebné vyhradiť blok odkazov a neexistuje žiadne iné miesto na vhodných adries.
  • Spomínané zníženie nemení obsah NGen obrázky. NGen obrázky majú rovnaké stopa disku s aj bez zahltenia.
  • Momentálne dobrý spôsob, ako zistiť, keď aplikácia sa blíži limitu. Je potrebné monitorovať OutOfMemoryException či Vyhradený priestor je dostatočný.
  • OutOfMemoryException môže sa zobraziť aj v prípade, že existuje veľa nepoužívané pamäte, pretože tejto chyby sa týkajú dostupnosti pamäte okruhu rozsah adries 2 GB volajúceho.
  • Predvolená hodnota CodeHeapReserveForJumpStubs, by ste nemali meniť, pretože to môže súvisieť s problém popísaný vyššie. Sme videli prípad, kde skutočné by sa upraviť toto nastavenie ako riešenie.
  • Nastavenie NGenReserveForJumpStubs výrazne vyššiu hodnotu môže viesť k zníženiu výkonu a riziko odhalenia iné drobné problémy.

Pre používateľov IT

  • Tento problém sa môže vyskytnúť aj iné verzie rozhrania .NET Framework. Riešenie je však v súčasnosti platí len pre rozhranie .NET Framework 4.6.1.
  • Je zriedkavé problém, ktorý sa týka len veľké zaťaženie, s veľmi konkrétne vykonanie model. Viac ako 99 percent všetkých zaťaženie sa niekedy vyskytne tento problém.
  • Po aplikácii hodí výnimku OutOfMemory, jedine Odporúčané obnovenie je reštartujte aplikáciu.

Upozornenie: Tento článok bol preložený automaticky.

Svojstva

ID članka: 3152158 - Poslednji pregled: 05/10/2016 19:33:00 - Verzija: 2.0

Microsoft .NET Framework 4.6.1

  • kbsurveynew kbtshoot kbexpertiseinter kbmt KB3152158 KbMtsk
Povratne informacije