Utvecklare skapade Java med två primära mål i åtanke . Först , för att skapa ett programmeringsspråk byggd helt efter en objektorienterad paradigm . Andra att göra Java körs ovanpå Java Virtual Machine ( JVM ) säkerställa plattformsoberoende portabilitet . Eftersom Java sprang på JVM och inte gränssnittet direkt med hårdvaran , kunde JVM hantera många av de problem som är förknippade med objektorienterad programmering , nämligen minneshantering . Den process genom vilken JVM hanteras minnet kallas " garbage collection ". För att förstå samling , behöver en programmerare att förstå objektorienterad programmering begrepp , bland annat hur minnet hanteras . Objektorienterad programmering
Objektorienterad programmering ( OOP ) är en paradigm av programmering som programmerare skapa data "objekt" som en del av sin kod . Programmerare använder dessa objekt för att representera komplexa datatyper som innehåller både en stat och uppvisar vissa beteenden . Så, till exempel, skapar en programmerare en " sfär " klass för ett program som gör arbete som involverar beräkningar av sfärer. The Sphere klass kan innehålla data för en radie ( dess tillstånd ) och en funktion för att beräkna sitt eget område ( dess beteende ) .
Objekt och Memory
Både Java och C + + är OOP språk . Emellertid illustrerar skillnaden mellan de två behovet av sophämtning i Java. I C + + , en programmerare handlar direkt med operativsystemet . Detta innebär att när en programmerare vill skapa ett objekt , kan hon göra en av två saker . Först , kan hon skapa en " ytlig " kopia under kodningen . Andra , och mer vanligt , kan hon skriva kod som skapar objekten dynamiskt i " djupa " minne under körning av kod med hjälp av " pekare . "
Pekare och minnesläckor
A C + + -program använder pekare för att allokera minne under exekvering av kod . A " pekare " innehåller en hänvisning till en minnesplats . När en programmerare behöver utforma koden som skapar objekt under körning , använder han pekare för att referera minnet att avsätta för att skapa objekt . Denna pekare är då det enda som referenser som objektet . Om programmet flytta pekaren referens under exekvering , objektet " pekade " kan inte längre användas . Det sitter bara i minnet med inget sätt att komma åt den . När stora mängder objekt skapas genom pekare och kvar i minnet på grund av förlust av pekare referens , kallas detta en " minnesläcka " och kan orsaka allvarliga problem i ett program .
Garbage Collection
C + + , faller ansvaret att hantera minne och förhindra minnesläckor hållet på programmeraren . Java , till skillnad från C + + , körs på JVM , abstraherade från operativsystemet . På grund av detta , kan programmeraren ignorera ledningssystem minnet när det gäller objekt . Snarare håller JVM koll på befintliga objekt och referenser , och tar bort de som inte längre är i bruk . Detta sätt , faller uppgiften att hantera minne på JVM , och programmeraren kan arbeta med olika arbetsuppgifter samtidigt övertygade om att minneshantering tas om hand .
Garbage Collection och 1.4.1 JVM
1.4.1 versionen av JVM erbjuder en modell för sophämtning . JVM använder ett paradigm ålder division , medan " små " föremål och "gamla" objekt finns i minnet . JVM kan främja unga föremål för gamla föremål baserat på hur ofta de unga objekten kopieras under programkörning . Gamla föremål , sedan , anses vara viktiga och därför inte markeras för radering . Den 1.4.1 JVM sophämtning system använder ett " tåg " metod för insamling /radering , genom att öka små sophämtning passerar snarare än större , långsammare samlingar . Dessutom tar 1.4.1 JVM fördelen multibearbetningssystem genom att erbjuda samtidig sophämtning på flera processorer .