Hvad er en svag reference?
En svag reference er en henvisning til et objekt i hukommelsen, der ikke forhindrer, at et objekt renses af affaldsopsamlingsrutiner på grund af dets tilknytning til objektet. Denne type reference bruges ofte til at hjælpe med at eliminere hukommelseslækager, når der findes særlige forhold, der forhindrer, at normal affaldsindsamling sker. Programmeringsalgoritmer, der bruger en cirkulær reference eller holder ekstern information i en cache eller særlig struktur fordel ved at bruge svage referencer. Udnyttelsen af svage referencer i disse typer situationer muliggør oprydning af ubrugte referentobjekter og deres tilknyttede svage referencer.
Ved computerprogrammering oprettes en stærk reference typisk som standard, når der oprettes et objekt, og den hukommelse, der optages af objektet, forbliver tildelt, så længe den stærke reference forbliver levedygtig. En stærk reference bliver annulleret, og det er tilknyttetObjektets hukommelse frigøres kort efter en stærk reference, og dets objekt markeres, da det ikke længere bruges af et program. I visse situationer, såsom socketprogrammering eller billedmanipulationsapplikationer, har de klasser, der bruges til at skabe arbejdsobjekter, ikke den indbyggede kapacitet til at gemme yderligere oplysninger, som er nødvendiggjort af en bestemt applikation. De yderligere detaljer til kortvarige objekter såsom forbindelser eller billeder skal gemmes i supplerende cache -objekter og knyttet til de kortvarige objekter ved referencer. Når der bruges en svag reference i stedet for stærk reference, er de ekstra oplysninger ikke bundet af referencen og kan fjernes fra cachen af affaldsopsamleren, når referentobjektet er blevet markeret som ikke-levedygtigt.
Svage referenceklasser er normalt tilgængelige på sprog, der forstærkes med affaldssamlinger, herunder Java, Python, Perl, C#og .NET Framework. I C ++ er programmerere imidlertid typisk resPonsible for at sikre hukommelsesoprydning. Dette sprog har implementeret en smart pointerklasse, der giver nogle af de samme funktionaliteter, som svage referencer og affaldsopsamling giver, hvilket hjælper med at reducere hukommelseslækager forårsaget af ukorrekt pegeroprydning.
For yderligere at lette hukommelsesstyring kan sprog med affaldsopsamlingsfaciliteter yderligere forbedre funktionaliteten af et sprog ved at tilvejebringe finere gradienter af andre referencer end den stærke eller svage reference. Datatyper såsom bløde referencer og Phantom -referencer kan være inkluderet på disse sprog, hvilket giver mulighed for forskellige niveauer af genindvinding eller meddelelsesmeddelelse. Programmerere, der bruger sprog med automatiseret affaldsindsamling, skal gøre sig bekendt med alle de referenceklasser, der er tilgængelige for at forbedre applikationsydelsen.