Mennyire aktuális még ez a cikk ?
2014-02-16T12:45:31+01:00
2014-02-17T10:22:09+01:00
2022-06-29T08:06:04+02:00
  • A kérdésed memory pool volt, most meg garbage collector-t kérdezel. Ez a kettő nem ugyanaz. 
    Azaz mi is a kérdés?

    Memory pool -t ha kell (Csaboka2 által leírt esetekben érdemes) akkor használj.
    Garbage collector-t ha akarsz, használj.

    Mindkettőt használják ma is. Egyik sem része a C++ -nak, de vanna fejlesztői környezetek amikben bent vannak.

    A C++ által biztosított memória menedzsert pedig bizonyos esetekben lecserélik, mert van amikor nem túl jó. De valószínű az első programjaidban nem ez lesz a gyenge pont, így ezért ne aggódj nagyon.
    Mutasd a teljes hozzászólást!
  • En egy normalis memory manager mellett ennek csak egyetlen ertelmet latom: A lefoglalt dolgok tomeges azonnali felszabaditasa.

    Az ne legyen kifogas, hogy a veletlenul nem felszabaditott dolgok feltakaritasa, mert abban az esetben a programozo a hu1ye.

    Konkretan a Delphi-nek (fastmm) meg a Qt+MSVC12-nek ilyenje van, kulon 'poolokban' tarolja a kulonbozo meretu dolgokat (meret szering kb. logaritmikusan osztalyozva azokat), csak pont az az egyszeri tomeges free() hianyzik belole.

    Ha 'egyszeru' memory managert hasznalsz, arra konnyen ra lehet jonni, mert egy array of string felepitese ott a stringek szamat alapul veve hatvanyozottan sokaig tart (pl. Delphi7 es elotte).
    Mutasd a teljes hozzászólást!
  • Oké, de a kérdésem szempontra vonatkozik, mint pl. C++-ban nem érdemes megvalositani garbage collector kodot sima pointerek kezelésére, mert arra ott van a boost és az auto_ptr.
    Igy kérdezem, hogy a topic inditó link nem tulhaladott e már, és nincsenek e beépitett memory pool megoldások ?
    Mutasd a teljes hozzászólást!
  • Bocsánat, én értettem félre, én a 'Shared Memory Pool'-ra gondoltam, vagyis arra, hogy különböző processzek között közös memóriatartományt hozunk létre. (Persze az OS segítségével.)

    Amiről itt szó van, abban nincs semmi nem-triviális, legfeljebb annyi, hogy az épp nem használt elemeket egy listába érdemes gyűjteni (az az ugynevezett szabadlista), így a foglalásnál nem kell keresgélni.
    Mutasd a teljes hozzászólást!
  • Szerintem is félreértsz valamit arról, mire való egy memory pool. Tudtommal akkor szokás memory pool-t használni, ha ezek közül legalább egy igaz:
    - Nem akarjuk a malloc/new overhead-jét bevállalni (van nekik időbeli, és memóriabeli overhead-jük is). Ez inkább akkor játszik, ha gyakran foglalnánk és szabadítanánk fel egyébként az objektumokat, és ezért tényleg számít az overhead.
    - Valamiért fontosnak érezzük, hogy a memóriában egymáshoz közel legyenek az objektumok (pl. mert így jobban kihasználjuk a cache-t, vagy mert egyszerre akarjuk lementeni és betölteni őket)
    - Félünk, hogy sok foglalás és felszabadítás után nagyon széttöredezne a heap, és nem tudnánk könnyen intézni a további foglalásokat. (Ez utóbbi ma már tudtommal nem olyan nagy probléma, mert van low-fragmentation heap implementáció.)

    De egyébként a memory pool-ok is általában tömbökön alapulnak, vagy legalább is tömbszerűen használják a memóriájukat.
    Mutasd a teljes hozzászólást!
  • Nem kevered véletlenül ezzel?

    Flyweight pattern
    Mutasd a teljes hozzászólást!
  • Ha valaki ért modernebb technikákhoz memory pool téren is, akkor 2 sorban tud mást javasolni.

    Játékprogramoknál pl. sok hasonló objektumot is generálnak, amiket az ember akár tömbbe is rakhatna, de mivel akkor redundáns információkat tárol az objektumokkal kapcsolatban, ezért memory pool-t használnak.
    Mutasd a teljes hozzászólást!
  • > Az érdekel inkább, érdemes-e ezt a cikket megérteni ?

    Úgy érted, hogy először valaki más olvassa el helyetted, mert az ő ideje nyilván kevésbé értékes, mint a tiéd?

    > játékprogramok irásánál előfordul a memory pool használata.

    Hogyan, miért fordul elő?

    Mutasd a teljes hozzászólást!
  • Az érdekel inkább, érdemes e ezt a cikket megérteni ?
    Pl. játékprogramok irásánál előfordul a memory pool használata. De konkrétan ennek a cikknek az anyaga is jó lehet a játék program memoria használatának kezelésekor,vagy ennél jobb technikák vannak már erre a célra ?
    Mutasd a teljes hozzászólást!
  • Fussunk neki még egyszer a linknek: Design and Implementation of a Static Memory Pool

    Igazából az a kérdés, hogy mire szeretnél shared memporyt használni, és milyen platformon.
    Mutasd a teljes hozzászólást!
  • Sziasztok,

    a neten belebotlott egy memory poolokkal kapcsolatos cikkbe :

    MemoryPool

    Érdemes ezt jobban megérteni, vagy a modernebb C++ libraryk ezt már mind magukba foglalják ? Mennyire aktális ez ?
    Mutasd a teljes hozzászólást!
Címkék
abcd