Utviklere opprettet Java med to primære mål i tankene. Først , for å skape et programmeringsspråk bygget helt etter et objekt - orientert paradigme . Sekund, for å gjøre Java språk kjøres på toppen av Java Virtual Machine ( JVM ) å sikre cross platform portabilitet . Fordi Java kjørte på JVM og gjorde ikke grensesnitt direkte med maskinvaren , kan JVM administrere mange av de problemene som ligger i objektorientert programmering, nemlig minnehåndtering . Den prosessen der JVM håndtert minne kalles " garbage collection ". For å forstå samling , trenger en programmerer å forstå objekt - orientert programmering , inkludert hvordan minnet håndteres . Object -Oriented Programming
objektorientert programmering ( OOP ) representerer et paradigme for programmering der programmerere lage data "objekter" som en del av koden sin . Programmerere bruke disse objektene til å representere komplekse datatyper som inneholder både et statlig og viser bestemte handlinger . Så, for eksempel , skaper en programmerer en " Sphere " klasse for et program som gjør arbeid med beregninger av kuler. The Sphere klasse kan inneholde data for en radius (dens tilstand ) og en funksjon for å beregne sitt eget område ( sin oppførsel ) .
Objekter og Memory
Både Java og C + + er OOP språk . Imidlertid illustrerer forskjellen mellom de to behovet for renovasjon i Java. I C + + , en programmerer avtaler direkte med operativsystemet . Dette betyr at når en programmerer ønsker å lage et objekt , kan hun gjøre en av to ting. Først, kan hun lage en " grunne " copy under koding prosessen . Sekund, og mer vanlig , kan hun skrive kode som lager objekter dynamisk i "dypt" minnet under kjøring av kode ved bruk av " pekere . "
Pekere og minnelekkasjer
C + + program bruker pekere å allokere minne under kjøring av kode. A " pekeren " inneholder en referanse til et minneområde . Når en programmerer trenger å designe kode som lager objekter under kjøring, bruker han pekere til referanse minne til å sette til side for objektet skaperverket. At pekeren er da det eneste som referanser som objekt . Programmet bør flytte pekeren referanse under utførelse , objektet " pekte " kan ikke lenger brukes . Det sitter bare i minnet med ingen måte å få tilgang til den. Når store mengder objekter opprettes gjennom pekere og igjen i minnet på grunn av tap av pekeren referanse, er dette kjent som en " minnelekkasje " og kan forårsake alvorlige problemer i et program .
Garbage Collection
i C + + , faller ansvaret for å administrere minne og forhindrer minnelekkasjer holdent på programmereren. Java-språket , i motsetning til C + + , kjører på JVM , abstrahert fra operativsystemet . På grunn av dette , kan programmereren ignorere system minnehåndtering når det gjelder stedene. Snarere holder JVM orden på eksisterende objekter og referanser , og sletter de som ikke lenger er i bruk. På denne måten faller oppgaven med å administrere minne på JVM , og programmerer kan arbeide med ulike oppgaver mens overbevist om at minnehåndtering er tatt vare på.
Garbage Collection og 1.4.1 JVM
1.4.1 versjon av JVM tilbyr en modell for søppelrydding . JVM bruker en alder divisjon paradigmet , mens "unge" objekter og "gamle" gjenstander finnes i minnet. JVM kan fremme unge gjenstander til gamle objekter basert på hvor ofte unge gjenstander blir kopiert under kjøring av programmet . Gamle gjenstander , da, er ansett som viktig , og derfor ikke er merket for sletting . Den 1.4.1 JVM søppelrydding systemet bruker et "tog" metode for innsamling /sletting, ved at økende lite søppelrydding passerer snarere enn større , tregere samlinger. Dessuten tar 1.4.1 JVM nytte av multiprosesseringsoppgaver systemer ved å tilby samtidige søppelrydding på flere prosessorer .