|
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 | ||||||||