Ubuntun käyttö > Ohjelmointi, palvelimet ja muu edistyneempi käyttö

Javan virtuaalikoneen roskienkeruu-ohjelma

(1/1)

Jere Sumell:
Eilen tuli selviteltyä Javan virtuaalikoneen tuota muistimäärän uudelleenasettamista Eclipse IDE:ssä, niin mitä parametrit -Xms, -Xmx komentokehoitteelta ja Eclipse.ini tiedostossa määriteltynä nuo koot, mitä voi muuttaa niin siellä näyttäisi olevan oletuksena 2 gigaa tuohon GC:n käyttoon.

Mitä lopulta päädyin kun aloin ihmettelemään, saako tuon roskienkeruu-ohjelman tuhoamia ei käytossä olevia muistiviittauksia palautettua, niin luin pari artikkelia jossa oli toisessa todettuna kysymykseen vastaus "Mitä Javan sisäänrakennettu GC lopulta tekee tyyliin "It does Nothing". Sitten toisessa artikkelissa oli esiteltynä nuo JVM:n muistitasot.

Minkälaisia optimaalisia muistimääriä kannattaisi varata, vaikka Javalla nyt viime aikoina vähemmän ohjelmoinut mitään, mitä teoreettiset maksimit on käytännossä paljon suurempia mitä nyt ainakaan kotiläppäreissä ja tietokoneissa ole lähimainkaan, mitä voisi saada kevyemmäksi tuota kehitysympäriston toimintaa, jos pienentäisi noita muistimääriä, mitä koneessa on muitakin prosesseja ajossa samaan aikaan.

Joissain noissa emulaattoreissa on tullut vastaan muistinhallinan osalta tai ohjelman suorituksen osalta "unsafe", niin onko käytännossä niin, että jos asettaa nollaan nuo roskienkeruun varatun tilan, mitä käytännossä oliomuuttujien viittaukset ovat muistissa, sain sen käsityksen, joissain muissakin kielissä on roskienkeruu, esimerkiksi pythonissa, mitä pythonissa kaikki on olioita.

Vaikka koneessani on 8 gigaa muistia, tuntuu jotenkin hurjalta, että 2048 megatavua varattuna tuohon roskienkeruuseen.

Sama mitä kampusalueella siivojilla on robottiharjakoneet, mitä jossain kohtaa itsellänikin oli toiveammattina lakaisukoneen kuljettaja lapsena, ne fyysisessäkään maailmassa tuhoa niitä lakaistuja roskia, vaan ne täytyy ihmisen lopulta hävittää, tyhjentää se säilio ja viedä lajiteltuna oikeisiin roska-astioihin ne kiinteiston alueella. Sama varmaan robottiimureissa, mikä sekin on reaalielämän roskienkeruu-laite polypussikin pitää tyhjentää, varmaan robottiimuritkaan eivät täysin tuhoa kerättyjä roskia.

nm:

--- Lainaus käyttäjältä: Jere Sumell - 24.10.23 - klo:13.05 ---Eilen tuli selviteltyä Javan virtuaalikoneen tuota muistimäärän uudelleenasettamista Eclipse IDE:ssä, niin mitä parametrit -Xms, -Xmx komentokehoitteelta ja Eclipse.ini tiedostossa määriteltynä nuo koot, mitä voi muuttaa niin siellä näyttäisi olevan oletuksena 2 gigaa tuohon GC:n käyttoon.

--- Lainaus päättyy ---

-Xmx asettaa Java-prosessin muistiallokaation maksimin. Jos asetat sen liian pieneksi suhteessa sovelluksen ajonaikaiseen muistitarpeeseen, sovellus ei saa varattua tarvitsemaansa muistia ja kaatuu Out of memory -virheeseen. Roskienkeruu ei välttämättä edes käynnisty tässä tilanteessa, jos vapautettavaa muistia (poistettuja olioita ja dataa) ei vielä ole. Jos taas asetat -Xmx:n juuri sen kokoiseksi, että sovellus pystyy toimimaan kaatumatta, roskienkerääjä voi joutua tekemään jatkuvasti töitä, että sovelluksen vanha muistissa oleva data saadaan heti tarpeen tullen korvattua uusilla muistivarauksilla. Tämäkään ei välttämättä ole optimaalista sovelluksen suoritusnopeuden kannalta. Yleensä sovelluksella olisi hyvä olla jonkin verran ylimääräistä muistia, jotta roskienkeruu toimisi tehokkaasti.

Jere Sumell:
Kiitos vastauksesta ja jakamastasi asiantuntemuksesta.

Se nyt melkein mitä ohjelmoin ja generoin omalla ohjelmallani vakioveikkuksen hajarivejä, niin voi olla ihan ok, jos säilytän tuon 2 gigatavua, mitä kuitenkaan liian raskaalta tunnu tuo Eclipse-prosessin ajo ja kone ei jumita paljoa.

_Pete_:
Eclipse on aina ollut kankea ja muistisyöppö IDE. Kannattaa vaihtaa parempaan ilmaiseen Intellij IDEA.

Navigaatio

[0] Viestien etusivu

Siirry pois tekstitilasta