Ouppnåeligt minne
Inom datorprogrammering är oåtkomligt minne ett block av dynamiskt allokerat minne där programmet som tilldelade minnet inte längre har någon nåbar pekare som hänvisar till det. På liknande sätt är ett oåtkomligt objekt ett dynamiskt allokerat objekt som inte har någon nåbar referens till det. Informellt sett är oåtkomligt minne dynamiskt minne som programmet inte kan nå direkt, och inte heller nå genom att börja på ett objekt som det kan nå direkt och sedan följa en kedja av pekarreferenser.
I implementeringar av dynamisk minnesallokering som använder en sophämtare , återvinns objekt efter att de blivit oåtkomliga. Sopsamlaren kan avgöra om ett föremål är nåbart; alla objekt som inte längre är nåbara kan deallokeras . Många programmeringsspråk (till exempel Java , C# , D , Dylan , Julia ) använder automatisk sophämtning.
När minnet däremot blir oåtkomligt i implementeringar av dynamisk minnesallokering som kräver explicit deallokering, kan minnet inte längre explicit deallokeras. Oåtkomligt minne i system som använder manuell minneshantering resulterar i en minnesläcka .
Vissa sophämtare använder svaga referenser . Om ett objekt endast kan nås genom antingen svaga referenser eller kedjor av referenser som inkluderar en svag referens, sägs objektet vara
svagt nåbart . Sophämtaren kan behandla en graf med svagt nåbar objekt som oåtkomlig och deallokera den. (Omvänt kallas referenser som förhindrar att ett objekt samlas in med skräp starka referenser ; ett svagt nåbart objekt går inte att nå av någon kedja som endast består av starka referenser.) Vissa objektorienterade språk som insamlats av skräp, som Java och Python , har svaga egenskaper. referenser. Java -paketet java.lang.ref
stöder mjuka, svaga och fantomreferenser, vilket resulterar i att de ytterligare objektens nåbarhetstillstånd mjukt kan nås och fantom nåbara .
Otillgängligt minne (på språk, som C, som inte återvinner) är ofta förknippat med mjukvarans åldrande .
externa länkar
- Nicholas, Ethan (4 maj 2006). "Förstå svaga referenser" . java.net. Arkiverad från originalet den 19 augusti 2010 . Hämtad 1 oktober 2010 .