Skip to main content

Hvad er en svag reference?

En svag reference er en henvisning til et objekt i hukommelsen, der ikke forhindrer et objekt i at blive renset 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.

I computerprogrammering oprettes en stærk reference typisk som standard, når der oprettes et objekt, og den hukommelse, der er besat afObjektet forbliver tildelt, så længe den stærke reference forbliver levedygtig.En stærk reference bliver annulleret, og dens tilknyttede objekter hukommelse frigøres kort efter en stærk reference, og dens objekt er markeret, da det ikke længere bliver brugt 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 affaldssamleren, når referentobjektet er blevet markeret som ikke-levedygtigt.

Svage referenceklasser er normalt normaltFås på sprog, der er forstærket af affaldsindsamlingsundersystemer, herunder Java, Python, Perl, C#og .NET Framework.I C ++ er programmerere imidlertid typisk ansvarlige for at sikre hukommelsesoprydning.Dette sprog har implementeret en smart pointerklasse, der giver nogle af de samme funktionaliteter, som svage referencer og affaldsindsamling giver, hvilket hjælper med at reducere hukommelseslækager forårsaget af forkert rensningForbedre funktionaliteten af et sprog ved at give 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.