( hanischz | 2014. 05. 03., szo – 17:55 )

"És miért van arra szükség, hogy kézzel szabadíts fel memóriát?"

Nezzunk meg egy eleg gyakori muveletet:
MyObject bigObject = new MyObject;

Ezekkel van tele a programunk. Ezek az objektumok akkor szabadulnak fel, ha az oket tartalmazo objektum torlodik. Csak akkor. (Jol tudom? Ebben nem vagyok biztos, vagy a GC automatikusan torli ha mar nem hasznalja semmi?)
(Guugli2:
The most important thing to remember about Java memory management is "nullify" your reference.

Only objects that are not referenced are to be garbage collected.

For example, objects in the following code is never get collected and your memory will be full just to do nothing.

List objs = new ArrayList();
for (int i = 0; i < Integer.MAX_VALUE; i++) objs.add(new Object());

But if you don't reference those object ... you can loop as much as you like without memory problem.

List objs = new ArrayList();
for (int i = 0; i < Integer.MAX_VALUE; i++) new Object();

So what ever you do, make sure you remove reference to object to no longer used (set reference to null or clear collection).
)

Hogyan lehetne javitani a hatekonysagon? (Gyors googli) Ha mar nem kell a fenti obektum akkor:
bigObject = null;
Igaz ez? Mennyire gyakori ez a modszer a java programozok kozott? Mert ez is manualis felszabaditast jelent..ergo nem sok elonyet latom a GC-nek.

"Ha cpp akkor nem használsz referenciaszámlálót?"
De igen, ellenben ha nem kell mar torlom is ki. Qt eseten meghivom a deleteLater()-t illetve shared pointer eseten a megfelelo metodust. Igy legalabb nem tellik be a 16GB memoria negyede...