Kuinka voidaan ohjelmallisesti käskyttää roskien keruuta.
Toisin sanoen, missä kirjastossa ja luokassa sijaitsee Garbace Collector- luokka. Kysyn kun en löytänyt googlella, enkä Sunin sivuilta.
edit: kyseessä siis JME l. java
Veikkaisin, että System.gc(). Noin ainakin j2se:ssä.
Sehän ei kai sitten ole pakollinen roskienkeruu, vaan pelkästään kehotus, tai näin muistelisin.
http://developers.sun.com/techtopics/mobility/
Garbage Collection
Another useful method in the java.lang.Runtime class is gc(), which calls the garbage collector manually. It's usually called statically: System.gc(). To keep heap space free, be sure to set objects to null as soon as you're done with them. Setting an Image to null after a paint, for example, can free up a good chunk of memory.
You may be able to improve performance by using the System.gc() method to manage the GC schedule. Instead of just letting the system garbage-collect at its own discretion, try calling System.gc() when you know the user will be reading a screen and thus won't be interacting with the application immediately.
To see when the system is performing garbage collection, enable the toolkit's Trace Garbage Collection option.
Kiitokset vastanneille. Eiköhän toi toimi.
Nokialainen emulaattori näytti roskia olevan 0,8 Mt pahimmillaan (oma arvio, koska ohjelma kulutti pahimmillaan 0,9 Mt, ja koodissa oman arvion mukaan korkeintaan 50 kt dataa + grafiikat).
Eipäs osunut silmiin ko. sunin sivu.
Sanottakoon nyt että tuo gc() metodi on yksi turhimpia, sitä ei pitäisi ikinä käyttää missään koodissa. VM:stä riippuen se joko ei tee yhtään mitään tai sitten VM muuten vain ei välitä siitä. Sitä paitsi hyvin tehty VM tietää aina koodaajaa paremmin milloin on sopiva aika roskienkeruulle.
Ehkä peran ohjelmoi Nokian älypuhelimille, niissä tuntuu olevan raskaansarjan ongelmia muistin kanssa. Itselläni Nokian 9300 väittää muistin olevan vähissä ja pyytää lopettamaan ohjelmia, vaikka käynnissä olevien ohjelmien lukumäärä on nolla, eli ei ole mitään mitä sulkea. Ainut konsi, joka auttaa on akun irrottaminen. puhelimesta, jolloin ongelma raukiaa.
panttu kirjoitti:
Ehkä peran ohjelmoi Nokian älypuhelimille, niissä tuntuu olevan raskaansarjan ongelmia muistin kanssa. Itselläni Nokian 9300 väittää muistin olevan vähissä ja pyytää lopettamaan ohjelmia, vaikka käynnissä olevien ohjelmien lukumäärä on nolla, eli ei ole mitään mitä sulkea. Ainut konsi, joka auttaa on akun irrottaminen. puhelimesta, jolloin ongelma raukiaa.
Oikeaan osuit. En ole vielä edes uskaltanut ajaa ohjelmaa ko. älypuhelimessa, mutta jo emulaattori antoi aavistella tulevista ongelmista.
Toivottavasti ohjelmastani ei tule edellä mainitun tilanteen aiheuttajaa. ;)
Ois tietty pitäny huomioida, että nyt ei ollu kyseessä "hyvin tehty VM" :)
Ilmeisesti tuo muisti ongelma ei välttämättä johdu VM:stä vaan Symbian OS 7 version (series 80) tavasta käsittellä muistia, kun tuo ongelma ei pelkästään vaivaa javaa vaan kaikki ohjelmia kyseisessä puhelin mallissa.
Toistaiseksi mainittakoon omassa puhelimessa on edelleen vanhentunut ohjelmisto, kun ei ole tullut vielä käytyä päivittämässä puhelinta, niin väittämini voivat olla nyt vanhentuneita.
Aihe on jo aika vanha, joten et voi enää vastata siihen.