En aivan ymmärrä mitä yrität, onko sinulla siis yksi Thread joka lepää sekunnin ja on sekunnin aktiivisena.
Joo, laiton vähän huonosti tuon, joten minäpä tarkennan. Eli kun sanoin prosessin olevan levossa, niin tarkoitin että se ei ole ajossa ollenkaan. Ehkä olisi selkeämpi kuvata prosessia luokkana, jolle jokin "suurempi luokka" antaa suoritusaikaa sekunnin välein. Tämä suurempi luokka on itsellekin "pimiö", joten en tiedä millä periaatteella se suoritusaikaa jakelee. Sen tiedän että tämä "minun luokka" ei nuku sleepillä. se vain hyrrää for -silmukassa suorittaen eri operaatioita sekunnin, kunnes tämä "suurempi luokka" käskyttää lopettaamaan (time counter).
sinun ei tarvitse uudelleen alustaa luokkaa joka sekunnin välein, se vain kerää garbagea.
Tämä on juuri se minun ongelma. Jos varaan tilaa luokka olio taulukolle sekunnin välein, niin noin kymmenennellä ajokerralla heap - muisti täyttyy ja Java ilmoittaa virheestä.
Toisaalta, jos en varaa tilaa, niin ongelmia syntyy siihen viitatessa. Kun yritän sijoittaa taulukkoon olion, niin Java ilmoittaa, että ei tunnista aluetta, eli se tila tulisi varata.
Minäpä yritän konkretisoida tilannetta:
if (firstTimeRunning)
Array [] TestArray=new Array[SIZE];
else
TestArray[0]=Array0; // ei onnistu esim. toisella ajokerralla, koska Java ei ilmeisesti Tunne aluetta TestArray ?
esim. int muuttuja löytyy muistista vielä toisellakin ajokerralla, niin tällä olettamalla, miksei TestArray:kin löytyisi?
lisäys: Jos oikein ymmärsin tuon Javan muistinvaraus idean, niin se tosiaan varaa Keosta tilaa joka ajokerta Array*SIZE verran, mikäli yllämainittua if else rakennetta ei käytetä. Kymmenennellä ajokerralla minulla olisi tällöin 10 taulukko muistissa, joista tunetaan viittaukset vain yhteen, eli uusimpaan. Miten onnistun säilyttämään ensimmäisellä ajokerralla taulukkoa luodessa viittauksen, niin että ei tarvitsisi luoda uutta taulukkoa siirtyessä uudelleen ajoon?