eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programming › autorelease pools
Ilość wypowiedzi w tym wątku: 8

  • 1. Data: 2011-09-13 11:27:04
    Temat: autorelease pools
    Od: "kenobi" <g...@p...onet.pl>

    W obj-c jest cos co nazywa sie 'autorelease pools' i o ile rozumiem
    jest to posredni stopien miedzy recznym zarzadzaniem pamiecia
    (przez free/delete/release itp) a grabage collectorem.

    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
    //tu wywolaj funkcje
    [pool release];

    Dziala to tak ze wybrane (tj te obslugujace autorelelease) obiekty tworzone
    po zalaczeniu poola sa rejestrowane i nie trzeba ich zwalniac - zostana usuniete
    przy niszczeniu (albo drainowaniu) poola.

    Sam nie za bardzo znam sie ani na kwestiach dotyczacych gc ani tez i recznej
    gospodarki pamiecia ale pamietam ze toczyly sie tu onegdaj dyskusje nt jednego i
    drugiego a chyba nie byl omawiany wlasnie ten posredni przypadek ([sam jestem
    raczej zwolennikiem w wiekszosci statycznego podejscia - czyli mozna by to nazwac
    jeszcze 'czwarta droga'); jakby co to chetnie uslysze zdania dotyczace tego
    'posredniego'
    miedzy gc a reczna gosp sposobu.




    --
    Wysłano z serwisu OnetNiusy: http://niusy.onet.pl


  • 2. Data: 2011-09-13 14:18:24
    Temat: Re: autorelease pools
    Od: Paweł Kierski <n...@p...net>

    W dniu 2011-09-13 13:27, kenobi pisze:
    > W obj-c jest cos co nazywa sie 'autorelease pools' i o ile rozumiem
    > jest to posredni stopien miedzy recznym zarzadzaniem pamiecia
    > (przez free/delete/release itp) a grabage collectorem.
    >
    > NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
    > //tu wywolaj funkcje
    > [pool release];
    >
    > Dziala to tak ze wybrane (tj te obslugujace autorelelease) obiekty tworzone
    > po zalaczeniu poola sa rejestrowane i nie trzeba ich zwalniac - zostana usuniete
    > przy niszczeniu (albo drainowaniu) poola.
    >
    > Sam nie za bardzo znam sie ani na kwestiach dotyczacych gc ani tez i recznej
    > gospodarki pamiecia ale pamietam ze toczyly sie tu onegdaj dyskusje nt jednego i
    > drugiego a chyba nie byl omawiany wlasnie ten posredni przypadek ([sam jestem
    > raczej zwolennikiem w wiekszosci statycznego podejscia - czyli mozna by to nazwac
    > jeszcze 'czwarta droga'); jakby co to chetnie uslysze zdania dotyczace tego
    'posredniego'
    > miedzy gc a reczna gosp sposobu.

    Świetnie się stosuje np. w przypadku, gdy w ramach jakiegoś
    separowanego przetwarzania musisz tworzyć dużo małych obiektów
    tymczasowych, a co najwyżej niektóre z nich będą potrzebne jako wyniki.
    (Ewentualny koszt kopiowania z puli do "innej" pamięci jest mały)

    Wtedy zysk jest duży:
    - alokacja z puli może być bardzo szybka (szczególnie, gdy dostęp do
    niej jest z jednego wątku, a obiekty są zbliżonych rozmiarów)
    - dealokacja puli jest jeszcze szybsza 8-)
    - na pewno wszystkie obiekty z puli zostaną usunięte - nie można mieć
    wycieków pamięci, o ile tylko zwolni się pulę (i nie ma referencji
    z obieków z puli, ale tym powinny zająć się ewentualne destruktory).
    Do tego zarządzanie jest bardzo proste - tworzę, tworzę,... potem
    niszczę pulę i już.

    To jest oczywiście bardzo szczególny przypadek, ale powyższe zalety
    można wykorzystać przy innych okazjach.

    --
    Paweł Kierski
    n...@p...net


  • 3. Data: 2011-09-13 14:53:55
    Temat: Re: autorelease pools
    Od: n...@m...invalid

    W dniu 13.09.2011 r. 16:18, Paweł Kierski pisze:
    > W dniu 2011-09-13 13:27, kenobi pisze:
    >> W obj-c jest cos co nazywa sie 'autorelease pools' i o ile rozumiem
    >> jest to posredni stopien miedzy recznym zarzadzaniem pamiecia
    >> (przez free/delete/release itp) a grabage collectorem.
    [...]
    > Świetnie się stosuje np. w przypadku, gdy w ramach jakiegoś
    > separowanego przetwarzania musisz tworzyć dużo małych obiektów
    > tymczasowych, a co najwyżej niektóre z nich będą potrzebne jako wyniki.
    > (Ewentualny koszt kopiowania z puli do "innej" pamięci jest mały)
    >
    > Wtedy zysk jest duży:
    > - alokacja z puli może być bardzo szybka (szczególnie, gdy dostęp do
    > niej jest z jednego wątku, a obiekty są zbliżonych rozmiarów)
    > - dealokacja puli jest jeszcze szybsza 8-)
    > - na pewno wszystkie obiekty z puli zostaną usunięte - nie można mieć
    > wycieków pamięci, o ile tylko zwolni się pulę (i nie ma referencji
    > z obieków z puli, ale tym powinny zająć się ewentualne destruktory).
    > Do tego zarządzanie jest bardzo proste - tworzę, tworzę,... potem
    > niszczę pulę i już.
    >
    > To jest oczywiście bardzo szczególny przypadek, ale powyższe zalety
    > można wykorzystać przy innych okazjach.
    >
    Ciekawe. Uczciwie pytam: czym rzecz się różni od TLS (Thread Local Storage)?


  • 4. Data: 2011-09-13 16:35:48
    Temat: Re: autorelease pools
    Od: Jacek <a...@o...pl>

    Znudzi sie kiedys toboie tworzenie pseudopostaci?
    Nie wiem jak inni Ciebie odbieraja, ale ja uwazam, ze nie jest normalne
    tworzenie, nie tyle wielu kont, co wielu postaci...


  • 5. Data: 2011-09-13 17:09:35
    Temat: Re: autorelease pools
    Od: g...@p...onet.pl

    > Znudzi sie kiedys toboie tworzenie pseudopostaci?

    > Nie wiem jak inni Ciebie odbieraja, ale ja uwazam, ze nie jest normalne

    > tworzenie, nie tyle wielu kont, co wielu postaci...

    Konta mam raptem 3 a to glownie po temu ze w onecie jest limit 10 postow na dobe. Nie
    tworze zadnych 'postaci' tylko uzywam wielu 'ksyw' bo sa fajne.

    --
    Wysłano z serwisu OnetNiusy: http://niusy.onet.pl


  • 6. Data: 2011-09-13 18:29:44
    Temat: Re: autorelease pools
    Od: g...@p...onet.pl

    > W dniu 2011-09-13 13:27, kenobi pisze:

    > > W obj-c jest cos co nazywa sie 'autorelease pools' i o ile rozumiem

    > > jest to posredni stopien miedzy recznym zarzadzaniem pamiecia

    > > (przez free/delete/release itp) a grabage collectorem.

    > >

    > >   NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

    > >     //tu wywolaj funkcje

    > >    [pool release];

    > >

    > > Dziala to tak ze wybrane (tj te obslugujace autorelelease) obiekty tworzone

    > > po zalaczeniu poola sa rejestrowane i nie trzeba ich zwalniac - zostana usuniete

    > > przy niszczeniu (albo drainowaniu) poola.

    > >

    > > Sam nie za bardzo znam sie ani na kwestiach dotyczacych gc ani tez i recznej

    > > gospodarki pamiecia ale pamietam ze toczyly sie tu onegdaj dyskusje nt jednego i

    > > drugiego a chyba nie byl  omawiany wlasnie ten posredni przypadek ([sam jestem

    > > raczej zwolennikiem w wiekszosci statycznego podejscia - czyli mozna by to nazwac

    > > jeszcze 'czwarta droga'); jakby co to chetnie uslysze zdania dotyczace tego
    'posredniego'

    > > miedzy gc a reczna gosp sposobu.

    >

    > Świetnie się stosuje np. w przypadku, gdy w ramach jakiegoś

    > separowanego przetwarzania musisz tworzyć dużo małych obiektów

    > tymczasowych, a co najwyżej niektóre z nich będą potrzebne jako wyniki.

    > (Ewentualny koszt kopiowania z puli do "innej" pamięci jest mały)

    >

    > Wtedy zysk jest duży:

    >  - alokacja z puli może być bardzo szybka (szczególnie, gdy dostęp do

    > niej jest z jednego wątku, a obiekty są zbliżonych rozmiarów)

    >  - dealokacja puli jest jeszcze szybsza 8-)

    >  - na pewno wszystkie obiekty z puli zostaną usunięte - nie można mieć

    > wycieków pamięci, o ile tylko zwolni się pulę (i nie ma referencji

    > z obieków z puli, ale tym powinny zająć się ewentualne destruktory).

    > Do tego zarządzanie jest bardzo proste - tworzę, tworzę,... potem

    > niszczę pulę i już.

    >

    > To jest oczywiście bardzo szczególny przypadek, ale powyższe zalety

    > można wykorzystać przy innych okazjach.

    >

    te pule o ktorych tu mowa to chyba jednak inne pule niz te w obj-c, wogole to chyba
    obj-c na maku mozna polecic tym ktorzy
    interesuja sie jezykami, bo to raczej ciekawy jezyk w pewnym sensie,np bardziej niz
    np java

    --
    Wysłano z serwisu OnetNiusy: http://niusy.onet.pl


  • 7. Data: 2011-09-14 03:10:11
    Temat: Re: autorelease pools
    Od: p...@p...onet.pl



    > obj-c, wogole to chyba obj-c na maku mozna polecic tym ktorzy
    > interesuja sie jezykami, bo to raczej ciekawy jezyk w pewnym sensie,np bardziej niz
    np java

    obecnie interesuje sie core animation i chcialbym rozpykac jak to działa (tj co mozna
    tym 'narysowac') niestety szefostwo bezmyslnie goni 'w produkcje'


    --
    Wysłano z serwisu OnetNiusy: http://niusy.onet.pl


  • 8. Data: 2011-09-14 06:42:38
    Temat: Re: autorelease pools
    Od: Paweł Kierski <n...@p...net>

    W dniu 2011-09-13 16:53, n...@m...invalid pisze:
    [...]
    > Ciekawe. Uczciwie pytam: czym rzecz się różni od TLS (Thread Local
    > Storage)?

    Pula nie musi być przyporządkowana do wątku - opisałem tylko szczególny
    przypadek, w którym dzięki takiemu założeniu implementacja (i operacje)
    są tanie.

    TLS to sposób przechowywania różnych zawartości dla per wątek, a pula
    to sposób operowania na obszarze pamięci.

    --
    Paweł Kierski
    n...@p...net

strony : [ 1 ]


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: