June 18, 2001
Ska inte java själv plocka bort objekt som det inte finns några referenser till?
T.ex gjorde jag en vektor i vars celler jag ständigt skapade en ny Integer i. Då bör väl den gamla försvinna?
Jag skrev:
vektorNamn.add(position, (Objekt)(new Integer(någonSiffra)))
Programmet tog upp 96% av CPUn efter bara en kort stund så något fel är det, och jag vet att felet har ngt med detta att göra.
August 2, 2001
Jo Javas objekt garbage collectas (GC:as), men det är inte specat när GC ska köras. Utan det är JVM som kör GC i bakgrunden då och då, bl.a. om den upptäcker att det behövs mer minne. Det ska gå att under runtime säga att ett objekt ska GC:as jag har dock aldrig själv använt detta.
Om man kör någon tids kritisk applikation så kan ju GC:n ställa till problem om GC:n helt plötsligt börjar köra när all datakraft behövs av programmet.
Att processorn utnyttjas till 96 % är inte så konstigt så länge processorn har något att göra t.ex. så skulle även koden nedan utnyttja processorn till max.
while(true)
i++
Man skulle ju t.ex. nästan aldrig få så stort processorutnyttjande om skrivit en egen notepad eftersom programmet konstant skulle stå och vänta på tangenttryckningar.
Slutsats jag tror inte du har gjort något fel om du håller på och skapar dessa objekt i någon form av "lång" slinga
1 Guest(s)