OZ 2011/1-2

M T 41 ORGANIZACIJA ZNANJA 2011, LETN. 16, ZV. 1 – 2 objekt odstrani ali ne. Da bi bili ti zamiki čim krajši, GC razbije trajajoče opravilo na več majših delov, kar ima za posledico bolj tekoče delovanje aplikacije. Spodaj je opisan življenjski krog nekega objekta: • kreiran, • v uporabi, • neviden, • nedosegljiv, • v izboru sprostilca pomnilnika (GC-ja), • finaliziran, • dealociran. Kreiran objekt Pri ustvarjanju novega primerka razreda se izvedejo naslednji postopki: • alocira se pomnilnik za novi objekt, • izvedejo se konstruktorji nadrazredov, • inicializirajo se spremenljivke, • izvede se konstruktor. Na novo kreiran objekt se dodeli neki spremenljivki in tako preide v stanje "V uporabi". Objekt v uporabi Objekt je lahko referenciran iz spremenljivke na stack -u ali iz statične spremenljivke na kopici (pomnilnik heap ). Povezava iz stack -a se prekine, ko spremenljivka ni več uporabna oz. trenutna nit zaključi delo in se zapre. Povezave iz statičnih spremenljivk prekinemo tako, da to spremenljivko postavimo na ničto vrednost ( null ). Nevidni objekt Objekt je neviden, ko je še vedno v uporabi, a ga ni mogoče doseči. Primer: public void run() { try { Object foo = new Object(); foo.doSomething(); } catch (Exception e) { } while (true) { // do stuff }// loop for ever } Znotraj neskončne zanke objekt "foo" ni viden, sprosti pa se šele po izhodu iz metode. Taki nevidni objekti lahko povzročijo nenadzorovano naraščanje porabe pomnilnika. Nedosegljivi objekt Objekt je nedosegljiv, ko na njega ne kaže nobena močna povezava. Na objekt ne kaže nobena začasna spremenljivka iz stack -a, nobena statična spremenljivka in nobena referenca iz nativne kode. To vse so tako imenovane spremenljivke GC root . Na objekt lahko kaže močna referenca iz drugih objektov, toda noben od teh objektov ne sme biti referenciran iz spremenljivk GC root . Tak objekt je kandidat, da ga GC odstrani. JVM odstrani objekt, ko potrebuje pomnilnik, ki ga ta objekt zaseda. Objekt v izboru GC Objekt je v tem stanju, ko je sprostilec pomnilnika – GC ugotovil, da je objekt kandidat za brisanje. Če ima objekt metodo finalize() , jo izvede in preide v stanje "finaliziran". Finaliziran objekt Objekt je v tem stanju, če je po izvedbi metode finalize() še vedno nedosegljiv. Metoda finalize() ni priporočljiva, ker samo podaljša čas obstoja objekta ali ga celo naredi zopet vidnega. Dealociran objekt To je zadnje stanje objekta, ko GC sprosti pomnilnik, ki ga je zasedal ta objekt. Kdaj se to zgodi, pa je odvisno od same izvedbe GC -ja. Z Java 2.0 so se poleg močnih referenc pojavile v paketu java.lang.ref še reference SoftReference , WeakReference in PhantomReference . S temi novimi referencami je omogočeno vsaj minimalno komuniciranje z GC -jem. GWT (GOOGLE WEB TOOLKIT) Na področju spletnih odjemalcev je stanje še vedno tako, da obstaja vsaj 100 različnih ogrodij za razvoj spletnih aplikacij na osnovi jave. Google je s svojo ponudbo GWT (Google web Toolkit, http://code.google.com/intl/sl- SI/webtoolkit/) predstavil nov pristop k razvoju spletnih odjemalcev. Gre za ogrodje, ki ga lahko uporabimo v okolju Eclipse ali katerem drugem IDE za javo. GWT naj bi omogočil razvoj kompleksnih spletnih dinamičnih aplikacij, ki temeljijo na tehnologiji AJAX. Pri tem lahko programer aplikacijo v popolnosti razvije v javi, pri čemer naj se ne bi srečeval s kodo HTML in JavaScript. Seveda je v praksi potrebno zelo dobro poznavanje vseh spletnih tehnologij. Programski vmesnik GWT pa je res tak, da se aplikacija razvije v javi. GWT celotno aplikacijo prevede v JavaScript, pri čemer zagotavlja delovanje v vseh obstoječih spletnih odjemalcih. POROČILO

RkJQdWJsaXNoZXIy MTAxMzI5