|
Java 2 Útikalauz programozóknak 5.0 | ||||||||
ELŐZŐ CSOMAG KÖVETKEZŐ CSOMAG | MEGOSZTVA EGY LAPON |
Memóriakezelésfejezet példaprogramjai.
Tovább lásd:
részletes leírás
A Memóriakezelés
fejezet példaprogramjai.
A Java nyelv és környezet tervezésekor az egyik szempont az volt, hogy a szintaxis minél ismerősebb legyen a (széles körben elterjedt és kedvelt) C és C++ nyelvek ismerői számára. (A C és C++ mellett az Eiffel, a SmallTalk, az Objective C és a Cedar/Mesa nyelvek is például szolgáltak.) Ugyanakkor kimaradtak a Java környezetbe nem illeszkedő, valamint a Java céljaira túl bonyolultnak, feleslegesnek, mással helyettesíthetőnek vagy nem eléggé biztonságosnak ítélt nyelvi elemek. A tervezők céljai között szerepelt, hogy a Java erősen típusos és biztonságos legyen, ugyanakkor rendelkezzék az interpretált, gyengén típusos nyelvek (mint például a UNIX-parancsértelmezők, awk stb.) előnyével, a gyors prototipizálhatósággal. Célkitűzés volt az is, hogy definit és platformfüggetlen legyen egy program viselkedése, az esetleges hibák fordításkor, betöltéskor, futtatáskor minél hamarabb kiderüljenek, és a fellépésükkor inkább azonnal váltsanak ki kivételt, mint hogy egy későbbi ponton definiálatlan, hibás, nehezen kideríthető okú viselkedést vonjanak maguk után. Ennek érdekében egyfelől számos ponton szűkítették a nyelv és környezet lehetőségeit a C, C++ (és egyébTartalomjegyzék a hivatkozott referenciákkal és felhasznált képekkel:vas-közeli) nyelvekhez képest, másfelől azonban ezáltal \ai dús'' hibaforrásokat iktattak ki. Emiatt a C, C++ nyelvek természetes összehasonlítási alapként kínálkoznak a Java nyelv memóriakezelésének ismertetésekor, már csak azért is, mert néha eltérő jellegű implementáció van a hasonló szintaxis mögött is. Minthogy a memóriamodellt, a memóriakezelést nagy mértékben a biztonságosság szempontjaira való tekintettel alakították ki, a fejezetben néhány, a biztonsággal kapcsolatos kérdést is érintünk. A fejezet első részében a Java nyelv memóriakezeléséről általában esik szó, majd a végén a Java 2 platform e téren bevezetett újdonságairól, a gyenge hivatkozásokról és a referencia-objektumokról.
instanceof
public class j1 { final static int READ=1; final static int WRITE=2; int flag; public j1 ( int flag) { this.flag=flag; } public void doit() { System.out.println((flag==READ) ? "READ" : "WRITE"); } } public class j2 { public static void main (String argv[]) { int flag=j1.READ; System.out.println((flag==j1.READ) ? "READ" : "WRITE"); new j1(flag).doit(); } } |
public class foo { public static void teszteld(int i,Object o1,Object o2) { System.out.println(i + ". " + (o1==o2) + " " + o1.equals(o2)); } public static void main(String arg[]) { Object o1[]={"",new String(""),new Integer(0),new byte[0]}; Object o2[]={"",new String(""),new Integer(0),new byte[0]}; for(int i=0;i |
void foo(int i,String s) { s=String.valueOf(++i); } void bar() { int i=0; String s=String.valueOf(i); foo(i,s); System.out.println(i + "=" + s); } |
String foo(int i) { return String.valueOf(++i); } void bar() { int i=0; String s=foo(i); System.out.println(i + "=" + s); } |
void foo(int e[]) { for(int i=1;i |
void *és a függvénymutatók
import java.util.*; class MemoryLeakage { static Collection |
public class a { public static void main(String args[]) { while(true) Thread t=new Thread(); } } |
SoftReference |
ReferenceQueue
osztály metódusai
java.util.WeakHashMap
osztály
import java.util.*; public class memt { public static void main(String argv[]) { WeakHashMap |
|
Java 2 Útikalauz programozóknak 5.0 | ||||||||
ELŐZŐ CSOMAG KÖVETKEZŐ CSOMAG | MEGOSZTVA EGY LAPON |