Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Problem sa Memory Usage applikacije

[es] :: .NET :: Problem sa Memory Usage applikacije

Strane: 1 2

[ Pregleda: 4617 | Odgovora: 34 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

CallMeSaMaster

Član broj: 43611
Poruke: 466
92.36.164.*



+1 Profil

icon Problem sa Memory Usage applikacije07.06.2009. u 21:37 - pre 180 meseci
Pozdrav svima,

Napravio sam jednu applikaciju koja mi nenormalno trosi memoriju...U cemu je problem?

Na jednoj formi imam TableLayoutPanel. U taj panel zavisno od broja upisa u bazi(recimo Imena uposlenika) pri startu forme, mi se dinamicki kreiraju Buttons.
Za svaki taj Button sam napravio Handler, znaci koliko god ima dugmadi, dodaje se i Buttonhandler.

Klikom na to dugme, u drugom TableLayoutPanel-u, se takodjer dinamicki generisu buttons, recimo organizacione jedinice svakog uposlenika. Znaci svaki uposlenik moze imati vise organizacionih jedinica, i zavisno od njihovog broja, za svaku jedinicu se genrise novi button.

Problem nastaje u sledecem: Kada u prvom Panelu klikam na Uposlenike(skacem sa jednog na drugi), svaki put mi se u drugom panelu mijenja content tj generisu mi se buttons. Medjutim svaki taj click na Uposlenika uzrokuje da applikacija trosi memoriju, tako da Memory Usage za tu app stalno raste.
Ako zatvorim tu formu, nista se ne desi, a ja bih ocekivao da se ta memorija smanji(isprazni) nakon sto sam zatvorio formu.

Pokusavao sam razne dispose, ali nista ne pomaze. Evo dole dio koda koji se izvrsava nakon sto kliknem na user-a, pa ako moze neko da mi pomogne kako da rijesim taj problem.

Znaci, kada se pozove na izvrsavanje ovaj donji code, svaki put memmory Usage poraste. Dispose sam ovdje(u ovom code) namjerno izostavio jer ionako ne radi.

App je radjena u Vb.Net 2005,
Za buttons koristim KryptonToolkit dll, znaci third Part control, ljepse izgledaju. Da li to moze biti uzrok???

Code:

Private Sub btnArrayClick(ByVal sender As System.Object, ByVal e As EventArgs)

        TableLayoutPanel2.Controls.Clear()

        Dim myConnection As SqlConnection = New SqlConnection(PopCodexAB00FAD5BB(Host1, Host2))
        Dim myCommand As SqlCommand = New SqlCommand("Jedinice", myConnection)
        Dim i As Integer = 0
        Dim da As SqlDataAdapter = New SqlDataAdapter
        Dim ds As New DataSet
        Dim url As String = "C:\Program Files\Orga\Orga\slike\"

        myCommand.CommandType = CommandType.StoredProcedure
        myCommand.Parameters.Add(New SqlParameter("@id", SqlDbType.Int)).Value = sender.tag

        da.SelectCommand = myCommand
        da.Fill(ds, "Jedinice")

        Dim btn(ds.Tables("Jedinice").Rows.Count) As KryptonButton

        For Each row As DataRow In ds.Tables("Jedinice").Rows

            i = i + 1

            btn(i) = New KryptonButton
            btn(i).Text = row(1).ToString
            btn(i).StateCommon.Content.ShortText.TextH = PaletteRelativeAlign.Far
            btn(i).ForeColor = Color.White
            btn(i).Tag = row(0)

            btn(i).Name = "Button" + i.ToString()
            btn(i).Size = New Size(178, 68)
            btn(i).StateCommon.Content.ShortText.Font = New Font("Ariel", 9, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point)
            btn(i).Values.Image = Image.FromFile(url + row(4))
            btn(i).StateCommon.Content.Image.ImageH = PaletteRelativeAlign.Near
            btn(i).PaletteMode = PaletteMode.SparkleBlue
            btn(i).ButtonStyle = ButtonStyle.Standalone

            TableLayoutPanel3.Controls.Add(btn(i))
            TableLayoutPanel3.AutoSize = True

            AddHandler btn(i).Click, AddressOf Me.btnArray1Click

        Next
End Sub
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6041



+4631 Profil

icon Re: Problem sa Memory Usage applikacije07.06.2009. u 22:29 - pre 180 meseci
Na kom OSu meris potrosnju memorije i kako?
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

CallMeSaMaster

Član broj: 43611
Poruke: 466
92.36.194.*



+1 Profil

icon Re: Problem sa Memory Usage applikacije07.06.2009. u 22:32 - pre 180 meseci
OS WIN XP SP2
Taskmanager kao mjerilo, zasad dovoljno
 
Odgovor na temu

vbbojan
Atanasijevic Bojan
Digit Consulting d.o.o.
Beograd

Član broj: 31580
Poruke: 273
93.93.194.*

Sajt: www.digitconsulting.rs


+20 Profil

icon Re: Problem sa Memory Usage applikacije07.06.2009. u 22:54 - pre 180 meseci
Ocigledno je da imas kreirane reference na tvoje buttone, a kojih nisi svestan.

Konkretno kod tebe su te reference kreirane prilikom registrovanja eventa - addhandler.

Jednostavno, prilikom zatvaranja forme pozovi removehanler za svaki button, nesto ovako:

Code:


For Each kb as KryptonButton in btn

   RemoveHandler kb.click, AddressOf Me.btnArray1Click

Next



Da odma' vidis dal ovo radi forsiraj garbage collect.
Ako imas puno memorije na raspolaganju, CLR ga ne potpaljuje bas cesto.


Pozdrav i javi dal' radi.
 
Odgovor na temu

CallMeSaMaster

Član broj: 43611
Poruke: 466
92.36.194.*



+1 Profil

icon Re: Problem sa Memory Usage applikacije07.06.2009. u 23:14 - pre 180 meseci
Pozzz,

probao, ne radi.
Ne konta ovaj For Each --> btn, jer nema pojma sta je to
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6041



+4631 Profil

icon Re: Problem sa Memory Usage applikacije07.06.2009. u 23:30 - pre 180 meseci
Citat:
CallMeSaMaster: OS WIN XP SP2
Taskmanager kao mjerilo, zasad dovoljno


Zato sam te i pitao. Taskmanager nikad nije dovoljno dobro merilo za koriscenje memorije u .NET-u, naroito na XP-u. Ako na sistemu imas dovoljno RAMa i ako GC zakljuci da mu je jeftinije da prosiri heap nego da oslobodi sopstvenu memoriju kroz Gen2 cleanup potrosnja memorije ce rasti. Posto vreme zivota tvojih objekata i nije tako kratko, sasvim je sigurno da su svi oni dospeli do Gen2 ili large-object nivoa. Kad GC zakljuci da ce mu dalje sirenje biti skuplje od ciscenja pocistice Gen2 ali i dalje NECE osloboboditi memoriju i cuvace je za slucaj novog sirenja, zbog toga ti ni rucni collect nece pomoci. Tek kad i ako ostale aplikacije na sistemu naprave pritisak na memoriju i .NET runtime dobije zahtev za smanjivanjem footprinta bice toliko velikodusan da memoriju vrati .

Jedini efektivan nacin da otkrijes da li imas ozbiljan memory leak je da pratis interno stanje GC memorije unutar aplikacije a tu je taskmenadzer na XPu neprecizan jer ne prikazuje private bytes po default-u vec working set (to je uvedeno tek na visti koja po defaultu prikazuje private set). Sve ostale GC parametre mozes da pratis iz performance monitora (da bi npr video koliko cesto se desava Gen2 cleanup i kako "dise" heap). Prvo sto bih ja pogledao su Gen2 HEAP size i Gen2 collection counter. Ako se Gen2 desava a Gen2 HEAP i dalje raste onda imas problem.

Baci pogleda na ovaj i ovaj i slicne tekstove za vise detalja o memoriji i kako se problemi resavaju,.


Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

vbbojan
Atanasijevic Bojan
Digit Consulting d.o.o.
Beograd

Član broj: 31580
Poruke: 273
93.93.194.*

Sajt: www.digitconsulting.rs


+20 Profil

icon Re: Problem sa Memory Usage applikacije07.06.2009. u 23:31 - pre 180 meseci
Aha!
btn ti je tvoj array buttona, ali sad vidim da je on dostupan samo iz
btnArrayClick procedure, resenje bi na primer bilo da provrtis sve kontrole
iz TableLayoutPanel3 i tu da odradis posao, na primer:

Code:


For Each ctrl in TableLayoutPanel3.Controls

   If TypeOf ctrl Is KryptonButton then
      RemoveHandler CType(ctrl, KryptonButton).Click, AddressOf Me.btnArray1Click
   End If

Next



Pozdrav
 
Odgovor na temu

CallMeSaMaster

Član broj: 43611
Poruke: 466
*.hermes.si.



+1 Profil

icon Re: Problem sa Memory Usage applikacije08.06.2009. u 09:12 - pre 180 meseci
@mmix Hvala za pojasnjenje

@vbbojan
Nazalost en pomaze...:(
 
Odgovor na temu

CallMeSaMaster

Član broj: 43611
Poruke: 466
*.hermes.si.



+1 Profil

icon Re: Problem sa Memory Usage applikacije08.06.2009. u 13:17 - pre 180 meseci
Pozdrav,

upravo sam testirao da na formu napravim obicna dugmad a ne KryptonButtons i da ne koristim njihovu dll. Za cudo, ali sa normalnim dugmadima
aplikacija ni u pola ne trosi toliko memorije. Cak sam i dispose izostavio sve iz coda i opet radi bolje nego sa tim dugmadima.

Da li je moguce da ove third part controle ovako zezaju?

Da li neko ima neku kolekciju dugmadi/Controla free a da rade normalno? Ova defaultna su malo bezze a ne gubi mi se vrijeme da pravim svoja....
 
Odgovor na temu

vbbojan
Atanasijevic Bojan
Digit Consulting d.o.o.
Beograd

Član broj: 31580
Poruke: 273
93.93.194.*

Sajt: www.digitconsulting.rs


+20 Profil

icon Re: Problem sa Memory Usage applikacije08.06.2009. u 14:50 - pre 180 meseci
Generalno third party kontrole znaju da budu žderači resursa,
to je cena koja mora da se plati za njihov lep izgled.

Moguće je da je sve u redu sa tvojim krypton kontrolama, a kao što
ti je mmx već detaljno objasnio, moguće je da imaš više nego dovoljno
memorije pa se CLR jednostavno razbaškario, a kako to sistemu ne smeta
onda on i ne cisti za sobom.

Naravno, uvek postoji mogucnost da sama kontrola ima bug i da ne
oslobađa resurse.

U svakom slučaju proanaliziraj situaciju po mmx uputstvu, možda
zaključiš da je sve u redu.

U aplikacijama kojima se ja bavim, (koristim devexpress kontrole)
zauzeće memorije zna da dogura i do 90 - 100 Mb za par otvorenih
formi (doduše koristim skinove) i onda obično ostane na toj
cifri, ma šta dalje radio.

Opet uporedi to sa na primer mozilla firefoxom koji za nekoliko tabova
zna da proguta i 200-300Mb ... ili na primer skype-om gde običan
"telefon" jedva naguraše u 50-60 Mb

Naravno, da bi petljao sa ovakvim stvarima (ako već nisi) moraš se upoznati
sa osnovnim principima memory managementa CLR-a
heapovi, large heapovi, generacije objekata, garbage collecting ...


Pozdrav












 
Odgovor na temu

CallMeSaMaster

Član broj: 43611
Poruke: 466
*.hermes.si.



+1 Profil

icon Re: Problem sa Memory Usage applikacije08.06.2009. u 15:03 - pre 180 meseci
Pozz,

Sve je meni to jasno.Po ovome sto sam gledao sve je ok. Medjutim ako ja 1000 kliknem na jednoj formi, zauzece memorije ce da raste u beskrajnost. A ta opcija da ce neko kliknuti 1000x realno postoji.

Druga stvar je da mi se to ne desava sa klasicnim .net Kontrolama. Kao sto i sam kazes, raste do nekog nivoa, ali onda tu ostaje.

Ovaj Krypton je nudio lijep izgled ali ja nisam spreman da na ustreb toga paltim tu cijenu....

Tako da moram dalje da experimentisem :)

Hvala u svakom slucaju
 
Odgovor na temu

CallMeSaMaster

Član broj: 43611
Poruke: 466
*.hermes.si.



+1 Profil

icon Re: Problem sa Memory Usage applikacije12.06.2009. u 15:52 - pre 180 meseci
Pozdrav jos jednom,

nakon istrazivanja dosao sam do zakljucka da samo jedna stvar rijesava moj problem: Format C:/

Zezam se!!!

Naime jedino sta u mom slucaju radi je sledece:

Code:

        Try
            Dim Mem As Process
            Mem = Process.GetCurrentProcess()
            SetProcessWorkingSetSize(Mem.Handle, -1, -1)
        Catch ex As Exception
            MsgBox(ex.ToString)
        End Try


Ovo periodicno oslobadja moju memoriju i radi sasvim ok. Nazalost na netu sto sam naso, misljenja su podijeljena oko prednsoti i mana.
Prema tome, bio bih zahvalan ako neko ima slicnog iskustva da mi kaze jeli ovo ok ili ne? Kakve posljedice mogu da ocekujem i sl.

Hvala na odgovorima
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6041



+4631 Profil

icon Re: Problem sa Memory Usage applikacije12.06.2009. u 16:22 - pre 180 meseci

Shrinkovanje working seta ce ti smanjiti footprint ali ce zato usporiti tvoj program jer ce morati da ceka da mu OS ponovo "naduva" working set pri svakom pristupu memoriji koja je izbacena iz RAM-a i ako je heap u aktivnoj upotrebi opet ce se naduvati na staru velicinu. Apsolutno nemas potrebe da ovo radis, ako sistemu zafali memorija smanjice ti sam working set.
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

CallMeSaMaster

Član broj: 43611
Poruke: 466
92.36.204.*



+1 Profil

icon Re: Problem sa Memory Usage applikacije12.06.2009. u 23:41 - pre 180 meseci
@mmix

ali upravo to i jest moj problem. Sistem uzima memoriju koja mu uopce nije potrebna.Svaki klik na neki button iz gore navedenog coda uzima i do 2MB!!!! To je zalosno.
A druga stvar ja sam klikao i klikao(testa radi - sta ce biti akda bude) i u jednom trenutku appliakcija odleti(crkne, sve zastopa ili nazovi kako hoces) jer ovo cudo nikad ne oslobodi memoriju.
Jednostavno sam primoran da radim ovu bljuvariju, koja mi se iskreno i ne svidja bas jer ne znam 100% koji ce biti impact. Medjutim rjesava moj problem.
I ne primjetim nista cudno kada ponovo klikam ta ista dugmad, mislim na brzinu i sl. Radi normalno.

Jednostavno ne izlazim na kraj sa ovim. I kao sto sam rekao, default buttons iz .NET-a rade normalno, memorija se lagano ali kontinuirano oslobadja. Medjutim kada koristim ove buttone, javlja se taj problem.
Pisao sam i kompaniji koja ih razvija i kazu da ne bi trebalo da se to desava...Ne moguce da mi je code toliko los da je to problem. Bar bi mi neko od vas rekao ne radi s eto tako ili nesto sl.

Ne znam sta jos da radim. Iskreno default buttons i nisu cemu...
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6041



+4631 Profil

icon Re: Problem sa Memory Usage applikacije13.06.2009. u 00:32 - pre 180 meseci
Da, ali ako imas leak ovo nije resenje, i da ne radis redukciju working set-a na kraju bi sistem sam poceo da ti trimuje working set i da odvlaci stranice u page file kad ostalim aplikacijama zafali, to sto si ti smanjio working set nije izbrisalo te page-ove iz virtuelnog adresnog prostora, samo ih je prebacilo u page file koji ce onda da se puni kontinuirano dok se ne napuni skroz i onda ces opet da dobijes outofmemory exception isto kao sto bi dobio i da nisi rucno trimovao working set. To je posledica cinjenice da je (uprosceno) ukupna memorija na sistemu = fizicka memorija+page file, ako je alociras odredjenim tempom a ne oslobadjas (sto je memory leak) napunice se posle X alokacija, dal ces tokom tih X alokacija da imas smanjeni working set ili ces imat veliki working set nije mnogo vazno, X ce doci pre ili kasnije. Sta vise trimovanjem working seta usporavas aplkaciju jer i oni page-ovi koji su u realnoj upotrebi posle trimovanja moraju da se ucitaju nazad u working set. Vrlo su retke situacije u kojima ti imas potrebu da trimujes working set na (-1, -1) a resavanje memory leak-a sigurno nije deo te price.

Ali ja i dalje mislim da ovo ne znaci da ti imas memory leak, veoma je moguce da ti jednostavno imas puno rama i da se aplikacija siri i ne poziva LOH cleanup, ne znam ni da li si uopste probao da iscitavas metriku po onim clancima sto sam ti dao. Factory dugmici mozda rade drugacije zato sto su instance manje i ne odu u LOH.
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

CallMeSaMaster

Član broj: 43611
Poruke: 466
92.36.204.*



+1 Profil

icon Re: Problem sa Memory Usage applikacije13.06.2009. u 00:50 - pre 180 meseci
Ovako imam HP Notebook nx7400, Intel CPU T2400 1, 83 GHz sa 2 GB Rama.

To sto ti govori stoji, samo se ne slazem u jednoj stvari a to je da nemam memory leak.
Ja mislim da imam, i te kako da imam, jer kao sto vec kazem aplikacija zatrokira cijeli com u nekom trenutku...
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6041



+4631 Profil

icon Re: Problem sa Memory Usage applikacije13.06.2009. u 04:10 - pre 180 meseci
Onda profiler u ruke i vidi koji objekti ti se gomilaju tokom rada aplikacije. Obicno u takvim situacijama jedna ili par klasa prednjace daleko daleko ispred ostalih.

Imas dosta i specijalizovanih profilera, npr http://memprofiler.com/ ciji trial ti traje 14 dana sto je dovoljno vremena da resis svoj problem.
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

CallMeSaMaster

Član broj: 43611
Poruke: 466
92.36.175.*



+1 Profil

icon Re: Problem sa Memory Usage applikacije13.06.2009. u 11:57 - pre 180 meseci
@mmix

Iskreno, pokrenuo sam profiler ali posto nisam dosad koristio ne mogu reci da mi je sve jasno iz ovoga. Ako mogu da te zamolim da prokomentarises
slike koje sam nakacio a dobio sam ih iz profilera.

Slika je iz 3 dijela...

http://img188.imageshack.us/gal.php?g=36291012.jpg
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6041



+4631 Profil

icon Re: Problem sa Memory Usage applikacije13.06.2009. u 13:50 - pre 180 meseci
Po ovome i nemas neki problem, bar ne sa nedisposovanim idispose objektima, sve sto je na ovoj listi je sica.

Uradi sledece:

prebaci filter na "with live instances" i uradi snapshot, onda maltretiraj aplikaciju dok ne krene da trokira, onda uradi novi snapshot. Uporedi ta dva snapshot-a a sortiraj listu po Delta polju (sortirano na dole). ako imas zivih leakovanih objekata imacas i veliki pozitivni delta. Za sada ignorisi kernel elemente u listi.
Ako nadjes neku .NET klasu koja ima drastican rast u Delta, rclick na nju i Show Type Details i dobices stack trace-ove lokacija u kojima su instance kreirane. Pa ajd da vidimo dal leak-ujes te dugmice

Ako tu nema leak-a to i dalje ne znaci da nema bug-a, moracemo onda da proverimo unmanaged resurse, mozda njihov dispose ne radi kako treba (mada mi je to sumnjivo, mislim da bi to neko primetio davno pre tebe). Al da bi uopste to uradili, idi na "native memory" tab i ukljuci "show memory differences between snapshots" i reci za koliko se sta povecalo u physical i commited, ne moras da ides duboko u listu, samo sve tri stavke u root-u i prvi nivo stavki unutar "Private" (managed heaps, stacks, itd), ne mora dublje od toga. Pa da vidimo koliko se naduvala memorija.

U prinicpu mozes i da snimis i zipuje pfsession fajl pa okaci ovde ili na neku dostupnu lokaciju, da ne prepricavas rezultate.

PS: Radi Gen0 snapshots, cisto da log ne sadrzi sve one sitne objekte ciji zivotni vek ne bi presao Gen0.
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

CallMeSaMaster

Član broj: 43611
Poruke: 466
92.36.132.*



+1 Profil

icon Re: Problem sa Memory Usage applikacije13.06.2009. u 16:56 - pre 180 meseci
Pozdrav,

evo okacio sam snapshots pa ako mozes pogledaj.

1 File je na pocetku

2 File je kad je sve trokiralo

3 File je Gen0

Nadam se da ce to biti dovoljno...

http://rapidshare.com/files/244124381/Snaphots.rar.html
 
Odgovor na temu

[es] :: .NET :: Problem sa Memory Usage applikacije

Strane: 1 2

[ Pregleda: 4617 | Odgovora: 34 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.