Hvad er en svag reference?
En svag henvisning er en henvisning til et objekt i hukommelsen, der ikke forhindrer, at et objekt opryddes af affaldsopsamlingsrutiner på grund af dets tilknytning til objektet. Denne type reference bruges ofte til at hjælpe med at fjerne hukommelseslækager, når der findes særlige forhold, der forhindrer normal affaldsopsamling. Programmeringsalgoritmer, der bruger en cirkulær reference eller indeholder ekstern information i en cache eller særlig struktur, drager fordel af svage referencer. Brug af svage referencer i disse typer situationer muliggør oprydning af ubrugte referentobjekter og tilhørende svage referencer.
Ved computerprogrammering oprettes typisk en stærk reference som standard, når et objekt oprettes, og hukommelsen, der er besat af objektet, forbliver allokeret, så længe den stærke reference forbliver levedygtig. En stærk reference annulleres, og dets tilknyttede objekts hukommelse frigøres kort efter en stærk reference, og dens objekt markeres som ikke længere bruges af et program. I visse situationer, såsom socket-programmering eller billedmanipulation, har klasser, der bruges til at oprette arbejdsobjekter, ikke den indbyggede kapacitet til at gemme yderligere information, som er nødvendiggjort af en bestemt applikation. De yderligere detaljer for kortvarige objekter, såsom forbindelser eller billeder, skal gemmes i supplerende cache-objekter og knyttes til de kortvarige objekter ved hjælp af referencer. Når der bruges en svag reference i stedet for stærk reference, er den ekstra information ikke bundet af referencen og kan fjernes fra cachen af affaldsopsamleren, når det referente objekt er blevet markeret som ikke-levedygtigt.
Svage referenceklasser er normalt tilgængelige på sprog, der er forstærket af affaldssamlingsundersystemer, herunder Java, Python, Perl, C # og .NET-rammen. I C ++ er programmerere imidlertid typisk ansvarlige for at sikre oprydning af hukommelsen. Dette sprog har implementeret en smart markørklasse, der giver nogle af de samme funktionaliteter, som svage referencer og affaldsopsamling giver, hvilket hjælper med at reducere hukommelseslækager forårsaget af forkert pointeroprydning.
For yderligere at lette hukommelsesstyring kan sprog med affaldsindsamlingsfaciliteter yderligere forbedre funktionaliteten af et sprog ved at tilvejebringe finere graderinger af andre referencer end den stærke eller svage reference. Datatyper, såsom bløde referencer og fantomreferencer, kan inkluderes i disse sprog, hvilket giver mulighed for forskellige niveauer af genindvindelse af genstand eller meddelelse om deallokation. Programmerere, der bruger sprog med automatisk opsamling af skrald, skal gøre sig bekendt med alle de referenceklasser, der er tilgængelige for at forbedre applikationsydelsen.