Welkom op de Nederland Computer Kennisnetwerk!  
 
Zoeken computer kennis
Home Hardware Netwerken Programmering Software Computerstoring Besturingssysteem
Computer Kennis >> Programmering >> Java Programming >> Content
HashMap : Hoe de oorzaak van een Geheugenlekkage Verwijder
De standaard bibliotheken voor de programmeertaal Java bieden de klasse HashMap . Een HashMap is een mapping van de toetsen om waarden , waar de sleutels en waarden kunnen behoren tot een bepaalde Java-klasse . Onder andere handelingen HashMap een werkwijze voor de waarde die een bepaalde sleutel te vinden en paren toevoegen en verwijderen ( key , value ) van de HashMap . HashMaps zijn een gemeenschappelijke bron van geheugenlek fouten in Java-programma's : exemplaren van een klasse correct worden beheerd door de code , maar een programmeerfout voorkomt dat ze uit de HashMap worden verwijderd wanneer ze niet langer nodig zijn . Want er is ten minste een uitstekende verwijzing naar die wees objecten , kan Java garbage collector hun geheugen niet terugvorderen , zodat de Java runtime uiteindelijk opraakt heap geheugen . Instructies
1

Uitvoeren van de Java- applicatie met de profiler gereedschap ( hprof ) geactiveerd en logging heap profielen . De nauwkeurige manier om dit te doen is afhankelijk van het besturingssysteem . Bijvoorbeeld , op Linux , start de applicatie als volgt :

java - Xrunhprof : file = myLog.txt , heap = plaatsen myApp

Replace
myApp door de naam van uw Java-toepassing . Deze aanroeping begint de Java Virtual Machine ( JVM ) in het profileren modus ; . De JVM schrijft de uitvoer van de profiler om myLog.txt bestand kopen van 2

Maak uw aanvraagprocedure sommige werklast , zodat objecten ( in name HashMaps ) worden toegewezen en weggegooid . Neem een ​​momentopname van de heap staat . Bijvoorbeeld , op Linux , de profiler genereert een momentopname van de staat van de heap 's wanneer u uitvoert :

doden -3 jvmPID

Vervang jvmPID met het proces -id van de instantie JVM waarop uw toepassing . Hprof voegt een momentopname van de hoop om de huidige inhoud van het bestand myLog.txt .
3

Maak uw aanvraag proces ongeveer dezelfde hoeveelheid werklast zodat meer objecten worden gemaakt en opgeschoond . Neem nog een momentopname van de staat van de hoop als in stap 2 .
4

Vergelijk de twee snapshots genomen in de stappen 2 en 3 . In het bijzonder kijken naar de lijnen tussen " WEBSITES BEGIN " en " WEBSITES END . " Identificeer de klassen waarvan de objecten zijn het meest in aantal zijn toegenomen tussen de twee snapshots , dat zijn degenen die verantwoordelijk zijn voor het geheugen lekken , als de belasting verwerkt door uw toepassing was ongeveer constant over de twee snapshots
5

Onderzoek . de snapshots naar de delen van de code toewijzen van objecten die niet bevrijd raken wanneer nodig te identificeren . Daarvoor concentreren op de lijnen die beginnen met " TRACE " waarbij " " event de volgende snapshot regel hebben voor elk van de klassen die in stap 4 .
6

omvatten de ontbrekende schrappingen van verwijzingen naar het probleem klassen voor het delen van je code die in stap 5 . Het geheugen lekken niet meer gebeuren .

Previous: Next:
  Java Programming
·Tekst aan Rijen in Netbeans Ja…
·Hoe te nemen Input in Java met…
·Hoe te bevestigen met een lope…
·Het wijzigen van de Scrollbar …
·De manieren om de Resource Bun…
·Hoe maak je een Hidden Value T…
·Hoe het verhogen van het tekst…
·JDK wordt niet gedetecteerd do…
·Hoe te Run VBS Script Van Java…
  Related Articles
Hoe maak je een Combo Box Maak in Visual…
Hoe maak je een Check Box Maak in Visual…
Hoe maak je een tekstvak maken in Visual…
Hoe maak je een optie Box in Visual Basi…
Hoe maak je een schijf keuzelijst in Vis…
Hoe kan ik een keuzelijst maken in Visua…
Hoe kan ik een Picture Box Maak in Visua…
Hoe een bestand keuzelijst Maak in Visua…
Hoe kan ik een afbeelding Box Maak in Vi…
  Programmering Articles
·Hoe maak je een programma dat Vervangt I…
·Hoe te Spike Penselen In GtkRadiant 
·Hoe maak je een webpagina Neem PHP 
·Hoe te loggen met Python op Facebook 
·Hoe te ActiveX gebruiken in C # 
·Hoe kan ik een array van objecten in Maa…
·Hoe te besparen een ListBox Waarde in VB…
·. Hoe te gebruiken DataGridView naar Inv…
·Hoe kan ik String converteren naar Datum…
Copyright © Computer Kennis http://www.nldit.com