Leírom röviden miért kell 64 bit akkor is, ha a fizikai memória kevesebb, mint 4g.
Nemcsak a fizikai memória mérete számít, hanem a _virtuális_ memóriáé is, azaz, hogy mekkora a címtér. Pl. a frissen kinyitott ff a top szerint 75m fizikai és 470m (!) virtuális memóriát használ. Azonnal látszik, hogy a 4g címtér erős korlát.
A Boehm-féle szemétgyűjtés (libgc, ezt használja a mono, a gnu-java) úgy keresi meg a program aktív memóriablokkjait, hogy a program változóiból kiindulva _minden_ pointernek látszó (32 vagy 64 bites) adatot pointernek vesz. Ha egy ilyen pointer egy memóriablokkra mutat, akkor abban is pointereket keres, amik nyomán továbbmegy, stb. (ez a mark rész). Ezután minden olyan memóriablokkot kitakarít, ahová a pointereket követve nem jutott el (sweep). A két fázis együtt adja a 'mark and sweep' algoritmust. Ha egy pointernek látszó adat mégsem volt pointer, akkor legfeljebb felesleges memóriablokkok is megmaradnak. Namost 64-bites rendszeren _sokkal_ kisebb az esélye az ilyen tévesztésnek. Tehát megállapíthatjuk, hogy 64 bites rendszeren jobban fut a Mono.
Filemapping. A filemapping (mmap) arra való, hogy filék részeit úgy írhassuk/olvashassuk, mintha az egy memóriablokkban volna. Itt nem az fő probléma, hogy van-e elég nagy fizikai memória a filé tárolására, ui. az os elintézi, hogy az a _rész_, amivel a program éppen foglalkozik, az bekerüljön a fizikai memóriába. Az az erősebb korlát, hogy van-e elég nagy címtér a filé címzésére. Márpedig a 4g-nél nagyobb filék nem ritkák.
--
CCC3