Avatar billede svarrer Nybegynder
14. oktober 2005 - 13:05 Der er 8 kommentarer og
1 løsning

JVM og new obejct's som args.

Hejsa..

Er der nogen der kender til problemer med at Garbage Collectoren ikke finder til objekter man new'er inline ala.

Product p = new Product(new ProObj(),someData, someOtherData);

Jeg har hørt at dette, (specielt mht new's som argumenter) kan forvirre JVM, og at disse objekter derfor ikke bliver GC'et.. `??

Nogen der kender til dette??

Mvh
Christian
Avatar billede Slettet bruger
14. oktober 2005 - 13:09 #1
Det sker kun hvis din, i dette tilfælde, Product holder fast eller på anden måde kommer til at holde en reference til ProObj. Carbage collectoren reference counter jo "bare" objekterne
Avatar billede svarrer Nybegynder
14. oktober 2005 - 13:09 #2
.. hov.. men hvis man derimod opretter et objekt først og giver det med som parameter.. så fungere det?!
ala.
ProObj po = new ProObj();
Product p = new Product(po,someData,someOtherData);

Dette skulle efter sigende virke bedre?!
Mvh
Christian
Avatar billede simonvalter Praktikant
14. oktober 2005 - 13:13 #3
nej..
Hvor får du den ide fra?
Så længe der er en reference til ProObj vil den leve videre.. Hvis ProObj kun refereres fra Product så vil den kunne garbage collectes når der ikke længere er en reference til Product.
Avatar billede svarrer Nybegynder
14. oktober 2005 - 13:20 #4
Jaa.. jeg må indrømme at jeg heller ikke havde hørt om det før og selv er ivrig tilhænger af både GC og new's som args.
Men problemet skulle eksistere iflg en kollega. Dog er det som en java applikation med Swing elementer til en PDA. (mener ikke JVM'en er den samme)..
Men da jeg pt jagter et memory leak i en større web app. tænkte jeg at jeg lige ville vende sagen med nogen der vidste mere om det end jeg ( Jer!).. ;-)

Tak for svarene..

Christian
kom med et svar..så sender jeg points.. hvis I stadig mener i har ret selvf ;-)
Avatar billede Slettet bruger
14. oktober 2005 - 13:25 #5
Har din kollega noget der ligner et bevis eller er vi ude i endnu en Java anekdote?
Avatar billede simonvalter Praktikant
14. oktober 2005 - 13:29 #6
ok svar.
Den eneste foreskel er at den sidste fylder lidt mindre i bytecode.

med webapps er det nok nogen andre problemer.. mindes en artikel som nævnte ting som singletons og threadlocal som kunne foresage nogen problemer.. f.eks med jdbc drivere når man reloader containeren... jeg kan prøve at finde noget læsning..
Avatar billede svarrer Nybegynder
14. oktober 2005 - 13:33 #7
kryptos >>
Jeg må være ærlig og sige at jeg ikke har andet end en mail, hvori der står " gør sådan" ..hvilket jeg (som denne tråd er bevis for ;-)) ikke kunne genneskue skulle havde den store virkning.

simonvalter >>
Uhh.. det ville være lækkert med lidt læsning.. er en lidt utaknemlig opgave at få! ;-)

takker for indlæg!
Christian
Avatar billede simonvalter Praktikant
14. oktober 2005 - 13:34 #8
kryptos hvis du vil have halvdelen så sig til

en lille serie: A day in the life of a memory leak hunter.. yet another day in the life of a memory leak hunter..
http://www.szegedi.org/articles/memleak.html

Den kan måske give nogen tips til hvad du kan kigge efter.
Avatar billede svarrer Nybegynder
14. oktober 2005 - 13:36 #9
Takker
/Christian
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester