De meeste programmeertalen ondersteunen objectgeoriënteerde programmering. Het is een methodologie om een programma of een software te bouwen met behulp van objecten. Een object wordt gemaakt met een klasse, dus het is een instantie van een klasse. Een klasse geeft de beschrijving van waaruit het object zou moeten bestaan. Bij het maken van objecten wordt geheugen toegewezen aan de objecten. Het toegewezen geheugen moet aan het einde van de uitvoering van het programma worden vrijgegeven om dat geheugen voor een ander object opnieuw te gebruiken. Programmeertalen zoals Java en C # .NET gebruiken afvalverzamelaars voor geheugenbeheer, terwijl talen zoals C en C ++ vereisen dat de programmeur geheugenbeheer uitvoert. De benodigde hoeveelheid geheugen moet worden toegewezen en aan het einde van de uitvoering moet het geheugen worden vrijgegeven. De garbage collector en destructor worden gebruikt voor het vrijgeven van geheugen. De belangrijk verschil tussen de vuilnisman en de destructor is dat een garbage collector is een software die automatisch geheugenbeheer uitvoert terwijl een destructor een speciale methode is die door de vuilnisman wordt genoemd tijdens de vernietiging van het object.
1. Overzicht en belangrijkste verschil
2. Wat is een Garbage Collector
3. Wat is een destructor
4. Overeenkomsten tussen Garbage Collector en Destructor
5. Vergelijking zij aan zij - Garbage Collector vs Destructor in tabelvorm
6. Samenvatting
Sommige programmeertalen hebben beheerde codemilieu's. In programmeertalen Java en C # wordt automatisch geheugenbeheer uitgevoerd. De programmeur hoeft het geheugen dat door de objecten wordt gebruikt niet vrij te maken. Het is gemakkelijker voor hen om zelfs complexe systemen te ontwikkelen, omdat het geheugenbeheer automatisch wordt uitgevoerd. In programmeertalen zoals C, C ++ en Objective C, moet het programma het geheugen van de objecten terug naar het systeem vrijgeven. Talen zoals Java en C # kunnen achterhalen welke objecten niet meer worden gebruikt. Daarna geven ze het geheugen dat is toegewezen voor die objecten terug aan het systeem.
In programmeertalen C # en Java, als er een klasse is genaamd Student, kan een object worden gemaakt met Student s = new Student (); Het 'nieuwe' wordt gebruikt om een instantie van de studentenklasse te maken. Het wijst geheugen toe aan het systeem. De 's' verwijst naar het geheugenblok dat voor dat object is toegewezen. De taalomgevingen bepalen of de objecten al dan niet worden gebruikt. Als ze niet verder worden gebruikt, wordt het geheugen vrijgegeven en kan het later worden gebruikt.
Figuur 01: Garbage Collector en Destructor
Wanneer een programma wordt uitgevoerd, worden de blokken geheugen toegewezen uit de systeemgeheugenpool. Vervolgens voert het programma de taken uit die dat geheugen gebruiken. Wanneer de programma-uitvoering voorbij is, zoekt de garbage collector of de toegewezen blokken geheugen voor het programma essentieel zijn of niet. Als ze niet nodig zijn, worden die geheugenblokken teruggestuurd naar het systeem. Dus, de garbage collector kan de gecreëerde objecten in het programma volgen. De geheugenblokken die niet langer nodig zijn, worden teruggestuurd naar de systeemgeheugenpool. Het belangrijkste voordeel van dit proces is om te bevestigen dat de programmeur zich niet hoeft te concentreren op het verwijderen van geheugen. Het balanceert de prestaties en het geheugengebruik.
Een destructor is een speciale lidfunctie van een klasse. Het wordt aangeroepen wanneer het object buiten de scope valt. Het object kan worden vernietigd wanneer een functie eindigt of aan het einde van de uitvoering van het programma. De destructor heeft dezelfde naam als de klassenaam. De constructor wordt gebruikt om het object te maken. Het kan parameters accepteren. De constructor kan ook retourwaarden hebben. Maar in een destructor is er geen retourtype of accepteren geen parameters. Een klasse kan maar uit één destructor bestaan. Een destructor wordt verwezen met behulp van het tilde-teken. Als de klassennaam Student is, is de destructor ~ Student () .
De garbage collector zoekt naar de objecten die niet meer nodig zijn. Het zorgt ervoor dat de objecten die niet meer door het programma worden gebruikt, worden vernietigd. Het roept de destructor op om het geheugen vrij te maken en de bronnen te delokaliseren. Destructors zijn nuttig om geheugen vrij te maken, bestanden te sluiten, netwerkbronnen vrij te geven en databaseverbindingen te sluiten. In de meeste programmeertalen is het niet nodig om de destructor te schrijven omdat de garbage collector de standaardconstructor op zichzelf roept. Als de programmeur een dynamische geheugentoewijzing heeft gedaan met behulp van pointers in een taal als C ++, dan moet hij een destructor schrijven om het geheugen vrij te geven voordat het object wordt vernietigd.
Garbage Collector vs. Destructor | |
Een garbage collector is een software die automatisch geheugenbeheer uitvoert. | Een destructor is een speciale methode die door de vuilnisman wordt genoemd tijdens de vernietiging van het object. |
Type | |
Een garbage collector is een software. | Een destructor is een methode. |
Garbage collector en destructor zijn twee termen geassocieerd met het vrijgeven van geheugen. In dit artikel is het verschil tussen Garbage Collector en destructor besproken. Het verschil tussen de garbage collector en de destructor is dat een garbage collector een software is die automatisch geheugenbeheer uitvoert, terwijl een destructor een speciale methode is die door de vuilnisman wordt opgeroepen tijdens de vernietiging van het object.
U kunt de PDF-versie van dit artikel downloaden en gebruiken voor offline doeleinden volgens citaatnotitie. Download de PDF-versie hier: Difference Between Garbage Collector and Destructor
1.lyndapodcast. "Hoe C # garbage collection werkt | Lynda. Zelfstudie. "Hoe C # garbage collection werkt | lynda.Com zelfstudie, LinkedIn Learning Solutions, 19 sept. 2011. Beschikbaar Hier
2.Destructors in C. "GeeksforGeeks, 27 mei 2017. Beschikbaar Hier
3.Jain, Shubham. "Garbage Collector And Destructor In C #." C # Corner. Beschikbaar Hier