( asch | 2022. 09. 30., p – 01:36 )

> Arra gondoltam, hogy fragmentálódik a címtartomány, lyukacsos, mint a sajt, foglalt és szabad területek váltogatják egymást. Ha ezt össze tudjuk gereblyézni úgy hogy a foglalt területek egymás után legyenek, utána a szabad területek szintén egy blokkban, akkor nyertünk

A Java Garbage Collector implementációja pontosan ezt tudja: az objektumokat a heap elejére tudja söpörni a GC futása után. Olyan a Java memória modellje, hogy lehetőség van az ojjektumok mozgatására a program futása közben. Ez egyébként egy nagyon fontos aspektusa a rendszernek, amit szerintem a Rust nem tud lemásolni, de Rust szakértőknek kellene erre válaszolni. Ezzel a feature-rel elvben egy Java program tetszőlegesen komplex fogalások és felszabadítások után is végtelen sokáig stabilan működhet, nem "öregszik" a processz semmitől.

C vagy C++ alatt ez szerintem lehetetlen.

A memória menedzser azért nem jó erre, mert annak fix méretű blokkjai vannak, nem tud morzsákkal bánni. Arra viszont képes, hogy amit régóta nem piszkált a program - például egy teljesen használatlan lap, azt ki tudja tenni swapba. De ha a program nem nullázza ki aktívan a nem használt memória tartományokat, akkor teljesen kidobni nem tudja, csak swappelni ugye. Ha a program aktívan nullázza a lapokat, akkor a memória menedzser teljesen ki is tudja dobni ezeket.

Szerintem a memória menedzser virtuális cím-> fizikai cím leképzése nem lehet akármennyire komplex, mert az lassít dolgokat de ebben nem vagyok biztos.