Datamaskin
  | Hjem | Hardware | Nettverk | Programmering | Software | Feilsøking | Systems | 
Programmering  
  • C /C + + Programming
  • Computer Programmeringsspråk
  • Delphi Programming
  • Java Programming
  • JavaScript Programmering
  • PHP /MySQL programmering
  • Perl Programming
  • Python Programming
  • Ruby Programming
  • Visual Basics Programming
  •  
    Datamaskin >> Programmering >> Java Programming >> Content
    HashMap : Slik fjerner årsaken til en minnelekkasje
    Standard biblioteker for Java programmeringsspråk gi klassen HashMap . En HashMap er en kartlegging fra nøkler til verdier , hvor tastene og verdier kan tilhøre enhver Java klasse. Blant andre operasjoner , gir HashMap en metode for å finne verdien knyttet til en gitt nøkkel og å legge til og slette (key , value) parene fra HashMap . HashMaps er en vanlig kilde til minnelekkasje feil i Java-programmer : forekomster av noen klasse forvaltes riktig av koden , men en programmeringsfeil hindrer dem fra å bli slettet fra HashMap når de ikke lenger er nødvendig . Fordi det er minst en enestående referanse til de foreldreløse objekter, kan Javas garbage collector ikke gjenvinne sin hukommelse, slik at Java runtime til slutt går tom for heap minne. Instruksjoner
    en

    Kjør Java-program med profiler verktøyet ( Hprof ) aktivert og logging heap profiler. Den nøyaktige måten å gjøre dette avhenger av operativsystemet . For eksempel på Linux , starte programmet som følger : en

    java - Xrunhprof : file = myLog.txt , heap = nettsteder MyApp

    Erstatt MyApp ved navn din Java-program . Dette påkalling starter Java Virtual Machine ( JVM ) i profilering modus ; . JVM skriver utgangen av profiler til fil myLog.txt
    2

    Gjør din søknadsprosessen noen arbeidsmengden, slik at objekter ( i spesielt HashMaps ) fordeles og forkastet. Ta et bilde av haugen staten. For eksempel på Linux , genererer profiler et øyeblikksbilde av haugen tilstand når du utfører : en

    drepe -3 jvmPID

    Bytt jvmPID med prosessen identifikator av JVM forekomsten som kjører din søknad . Hprof føyer til et øyeblikksbilde av haugen til det gjeldende innholdet i filen myLog.txt .
    3

    Gjør din søknadsprosessen omtrent samme mengde arbeidsmengden slik at flere objekter opprettes og søppel - samlet . Ta et nytt bilde av haugen tilstand som i trinn to .
    4

    Sammenlign de to snapshots tatt i trinn 2 og 3 . Spesielt se på linjene mellom " NETTSIDER BEGIN " og " NETTSIDER END ". Identifiser klasser som objekter har økt mest i antall mellom de to øyeblikksbilder , de er de som er ansvarlig for minnelekkasjer , som belastning behandles av programmet var omtrent konstant over de to øyeblikksbilder
    5

    Undersøke . øyeblikksbilder å identifisere de delene av koden tildeling av objekter som ikke får frigjort når det trengs . For det, konsentrere seg om de linjer som begynner med "spor " som har en " " hendelse på følgende øyeblikksbilde linje, for hver av klassene identifisert i trinn 4 .
    6

    Inkluder manglende sletting av referanser til problemet klasser for de delene av koden som er identifisert i trinn 5 . De minnelekkasjer ikke lenger skje.

    früher :

     Weiter:
      Relatert Artike
    ·Hvordan laste opp et bilde i en desktop applikasjon i J…
    ·Slik konverterer en dato i kalenderen i Java 
    ·Hvordan lage en kalender i Java 
    ·Jeg kan ikke skrive ut rader med en Java applet 
    ·Slik kjører Java Beans 
    ·Hvordan lage Java gjenkjenne Odd og Even Strings 
    ·Hvordan koble en direkte Java Application Interface 
    ·Hvordan merke et program i NetBeans 6.5 
    ·Hvordan å kompilere Java Uten JDK 
    ·Hvordan Skyll en Android Emulator Inndatabuffer 
      Anbefalte artikler
    ·Slik Send PHP feil til en fil i stedet for Web Browser 
    ·Hva er funksjoner av en Transfer Buffer 
    ·Hvordan lage en knapp på VB 
    ·Sette inn en JPG Into en Data Window 
    ·Hvordan legge til 30 minutter til en dato i PHP 
    ·Slik konfigurerer en Apache -server til å tjene Java 
    ·Hvordan skrive inn kinesiske tegn på din US Keyboard 
    ·Hva Er NETFx Folder 
    ·Hvordan lage Dir i PHP 
    ·Hvordan å telle hvor mange linjer med kode du har 
    Copyright ©  Datamaskin  http://www.datamaskin.biz/