Een aantal manieren zijn om te bepalen of een computerprogramma lekt geheugen . Een programmeur kan ziften door de source code om ervoor te zorgen dat al het geheugen toegewezen is deallocated , kan hij een programma dat zijn software test voor het geheugen lekken te schrijven , kan hij een memory management systeem dat hem in staat stelt om bij te houden van de gebruikte geheugen blijven bedenken of hij kan een derde partij programma dat test voor geheugenlekken gebruiken . Wat is een Geheugenlekkage ? Een geheugenlek is een ongewenste geheugengebruik door een computerprogramma , waar het programma geheugen toewijst voor gebruik en er niet in slaagt om het vrijgeven zodra het geheugen is niet meer in gebruik . Dit stuk van het geheugen zal niet meer beschikbaar zijn voor de computerprogramma . Een programma dat lekken genoeg geheugen dan genoeg tijd het systeem kan leiden tot opraken van beschikbare geheugen , die het programma of computer systeem te mislukken kan veroorzaken . Geheugen lekken kunnen ook leiden tot een systeem te vertragen tot een onbevredigende snelheid , omdat het geheugen pak slaag . Programma's die voor langere tijd , voeren veel toewijzingen of geheugen toewijzen in grote brokken kan zijn vooral gevoelig voor gevaarlijke geheugen lekken . Gebruik Good Practices Coding beste manier om ervoor te zorgen dat je programma niet lekt geheugen is om goede code die adequaat beheert de middelen van het systeem te schrijven . Zorg ervoor dat voor elke functie oproep dat het geheugen toewijst , is er een overeenkomstige oproep die herinnering deallocates . Sommige talen zoals Java , C # , VB.NET en , bieden garbage collection , waarbij het systeem controleert regelmatig of toegewezen geheugen is nog steeds in gebruik . Hoewel deze systemen niet volledig te voorkomen geheugenverlies , is het minder waarschijnlijk dat deze zich voordoen . Andere talen , zoals C + + , zodat stack allocatie , waarbij een deel van het geheugen automatisch wordt deallocated zodra de variabele die verwijst het gaat uit van de scope . Door het gebruik van de juiste taal voor de taak en het onderhouden van goede software te schrijven praktijken , kan veel geheugen lekken geheel worden vermeden . Maak een Memory Manager Sommige computer programma's vereisen zo veel code te lezen dat lopen door het programma te vinden waar het geheugen heeft gelekt is gewoon niet haalbaar . In deze gevallen kan het zinvol zijn om een memory manager component aan het programma te schrijven . De software zou dan een uniforme interface voor toewijzing van eventuele delen van het geheugen , en de manager houdt bij waar en hoe deze brokken worden toegewezen . In zijn eenvoudigste vorm , de manager geeft gewoon feedback , waardoor de programmeur om te zien hoeveel geheugen wordt gebruikt , en welke componenten worden gebruikt . Het kan ook zorgen voor het ophalen van vuilnis en bepalen hoe het geheugen wordt toegewezen en deallocated , het geven van een programmeur maar een plek om te zoeken naar geheugen lekken , in plaats van al de code voor het gehele programma . Maak een Test Program Men kan vaak kijken naar het geheugen wordt gebruikt door een programma met een systeem hulpmiddel , zoals de Windows Task Manager of "top " op Unix /Linux om te bepalen of het geheugen wordt gelekt . Dit is niet altijd sprake van een geheugenlek , maar kan een aantal initiële feedback geven . Soms is het mogelijk om een eenvoudig programma dat de verschillende onderdelen van een software om te bepalen of het geheugen lekt test schrijven . Het testprogramma kan dynamisch bepalen of worden gegeven voorkennis hoeveel geheugen een computerprogramma moet gebruiken . Het zorgt er dan voor dat de gebruikte hoeveelheid de hoeveelheid die moet worden gebruikt . Als een geheugenlek optreedt , het testprogramma geeft feedback over de manier waarop dat gebeurde , waardoor de programmeur om het lek te repareren. Third Party Software Programmeurs kunnen gebruik maken van vele derde - party programma's en bibliotheken om te testen of hun software lekt geheugen . In de . NET Framework van Microsoft , kan een geheugenlek testen inschakelen met de debug -versies van de toewijzing functies geheugen . Op Linux , Unix en Mac , kunt u gebruik maken van hulpmiddelen, zoals Valgrind , dmalloc en Insure + + een geheugenlek te isoleren . Veel geheugen debuggers zijn ook beschikbaar voor Windows . De beste tool voor de job afhankelijk van de ontwikkeling milieu en gebruikte taal , evenals specifieke kenmerken van het te zuiveren , zoals grootte , snelheidseisen zij wijze waarop deze met het systeem . Er zijn veel tools om uit te kiezen , en ze kunnen een zegen voor de gefrustreerde programmeur moe van het zoeken naar die laatste ongrijpbare lek te zijn .
|