[Java lista] switch

Peter Verhas peter at verhas.com
2008. Nov. 9., V, 12:34:49 CET


Megtisztelve érzem magam, hogy ern0 barátomnak új dolgot mondhatok:

C-ben (meg C++-ban) az objektumaidat felszabadítod, Java-ban pedig
nem? Nos a következő a helyzet:

C-ben meghívod a 'free' függvényt, és ezzel _jelzed_ a memóriakezelő
számára, hogy az a memória neked nem kell. Majd ő felszabadítja,
újrafelhasználja ha és ahogy és amikor akarja. Nyilvántartod magadnak,
hogy mikor és meddig kell neked a memória terület, újra és újra
leprogramozod a nyilvántartást, és amikor senkinek nem kell, akkor azt
mondod, hogy 'free'.

Java-ban nem hívod meg a 'free' függvényt, nem mondod a memóriakezelő
számára, hogy az a memória neked nem kell. Nem adminisztrálod külön
minden programodban, hogy ki használ egy objektumot és kinek kellhet
még. Ez általános probléma minden egyes esetben speciálisan megoldva,
nem hatékony programozási szempontból. Ezt megoldja a JVM memória
kezelő magától, ez a garbage collection. Nem hívod meg a 'free'
függvényt, hanem egyszerűen csak már nem hivatkozik senki az
objektumra, a JVM meg kidobja.

A C-beli módszer sokkal hatékonyabb kódot eredményez, ha nincs benne
hiba és ha jól programoztad le. Ha nem programoztad le jól, akkor
elszáll, és akkor lassabb is lehet a memória kezelés, mint a JVM
memória kezelése és a GC.

Az a vicc, hogy ezt te tudod, és tudom is, hogy tudod, de mégis egy
kis szemlélet. Úgy érzem, hogy az is nagyrészt megvolt, megvan, csak
már régen elfelejtettük, mert nem volt jelentősége amikor a C-t
tanultuk (én pl. 1984-ben), hogy a 'free' az nem szabadít fel, csak
megjelöli a memória darabot, mint felszabadíthatót.

Közben míg ezt írom jött a témában még egy levél, ami megerősített
abban, hogy ezt leírjam.

Péter

P.S.: És többek között a GC miatt a Java nem igazán alkalmas RT alkalmazásokhoz.

ern0 <ern0 at linkbroker.hu> írta (2008. november 9. 1:10):
> viszont amit utalok java-ban, az az, hogy csak ugy ott kell hagynom az
> objektumaimat, mint eb a szarat, pedig kurvara tudom, hogy mi a "scope"-juk
> --



-- 
Verhás Péter


További információk a(z) Javalist levelezőlistáról