Junior — Middle
Welke ontwikkelingsfasen kunnen worden onderscheiden in de levenscyclus van objecten in beheerde geheugen?
sobes.tech AI
Antwoord van AI
De levenscyclus van objecten in het beheerde geheugen in C# kan worden onderverdeeld in verschillende fasen:
- Aanmaak (Allocation) — het object wordt in de beheerde heap gemaakt met behulp van de
new-operator. - Gebruik (Usage) — het object wordt in het programma gebruikt, en referenties naar het worden opgeslagen in variabelen.
- Garbage Collection — wanneer er geen referenties meer naar het object zijn, markeert de garbage collector het als kandidaat voor verwijdering.
- Vrijmaken van geheugen (Finalization en Deallocation) — als het object een finalisator (
Finalize) heeft, wordt deze aangeroepen voordat het geheugen wordt vrijgegeven; daarna wordt het geheugen vrijgemaakt.
Een belangrijk punt — de garbage collector in .NET werkt in generaties (Gen 0, Gen 1, Gen 2), wat de prestaties en de tijd voor opruiming optimaliseert.
Voorbeeld:
class MyClass {
~MyClass() {
// Finalisator, wordt aangeroepen voordat het object wordt verwijderd
}
}
var obj = new MyClass(); // Aanmaak
// Gebruik van obj
obj = null; // Object is niet meer toegankelijk
// De garbage collector zal het geheugen later vrijmaken