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

Problem sa memorijom- C#

[es] :: .NET :: .NET Desktop razvoj :: Problem sa memorijom- C#

[ Pregleda: 2427 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

roberto555
Croatia

Član broj: 64744
Poruke: 451
*.adsl.net.t-com.hr.



Profil

icon Problem sa memorijom- C#15.02.2007. u 12:54 - pre 208 meseci
kod ispisa, napunim tablicu u datasetu, a izvještaj u CR-u je povezan na taj dataset, no kad zatvorim izvještaj, memorija koju je prethodno zauzeo, ( podaci u datatsetu, ), se jako sporo oslobađa, (to gledam u Win.Task Man.), ja sam u dataset punio 211 000 zapisa iz baze, -to se neče vjerojatno nikad ispisivat al za probau uzimam sve(imaju kriteriji pa se prema tome uzimaju zapisi iz baze), može mi netko asistirati na što da obratim pažnju kod toga? ili .reči što možda nije dobro.... ili???

-probao sam dodat da kad se zatvori napravim

dataset.tablica.dispose();
gc.collect();
-sad se oslobodi odjednom dosta al ne sve... nije mi baš prejasno....

hvala!


----------------------dodatak:

stavio sam i
crispis cr=new crispis(); - n kraju korištenja i njega dispose(); i sad je OK, samo me zanima jel to tako OK raditi?

[Ovu poruku je menjao roberto555 dana 15.02.2007. u 14:18 GMT+1]
----Roberto----
 
Odgovor na temu

sstanko78
Novi Sad

Član broj: 19139
Poruke: 411
212.200.52.*



Profil

icon Re: Problem sa memorijom- C#19.02.2007. u 06:02 - pre 208 meseci
GC ne pocisti memoriju bas skroz i ne onda kada bas ti to hoces
 
Odgovor na temu

TheAlas
Bojan Sala
Senior Software Eng
IGT
Beograd

Član broj: 36584
Poruke: 119
*.finsoft.co.yu.



+1 Profil

icon Re: Problem sa memorijom- C#19.02.2007. u 09:19 - pre 208 meseci
Najbolji odgovor bi bio da jednostavno ne otvaraš toliki broj zapisa osim ako to nije apsolutno neophodno. Ako koristiš bazu, filtriranje se vrši unutar same baze, pa čak i da nije na nekom super-serveru - biće znatno brže od tvog post-procesiranje podataka .
 
Odgovor na temu

roberto555
Croatia

Član broj: 64744
Poruke: 451
*.adsl.net.t-com.hr.



Profil

icon Re: Problem sa memorijom- C#19.02.2007. u 10:47 - pre 208 meseci
ne radi se o tome, krivo ste skužili,,, no sredio sam u međuvremenu,,,

hvala na trudu!
----Roberto----
 
Odgovor na temu

VerbatimBOT
Aleksandar Dragosavac
Senior .NET Developer

Član broj: 84129
Poruke: 228
*.sr.gov.yu.



Profil

icon Re: Problem sa memorijom- C#19.02.2007. u 18:36 - pre 208 meseci
Pa podeli to rešenje i sa nama :)
Winners never quit, quitters never win.
 
Odgovor na temu

roberto555
Croatia

Član broj: 64744
Poruke: 451
*.adsl.net.t-com.hr.



Profil

icon Re: Problem sa memorijom- C#20.02.2007. u 09:33 - pre 208 meseci
..pa eto, za ispis koristim CR, koji dolazi uz VS 2005 Pro, i na temelju rqznih kriterija (Prezime, ulica,.....) koje korisnik unese ja napravim select nad bazom i napunim dataset.tablica, te za datasource CRizvjestaju postavim taj dataset, sve je to lijepo, no ako korisnik nije recimo unio ništa u polja za kriterije (upozoren je na to) onda mu se u ispisu pojave svi zapisi, ja sam ti isprobavao na 211000 zapisa, i kad bi ja nakon toga zatvorio formu gdje je crystal report viewer, i u kojem se prikazao taj izvještaj, onda mi se nije oslobodila memorija, dakle ako su svi ti zapisi zauzeli ~100MB recimo, kad se to sve zatvorilo to se oslobađalo jako sporo, pa ako bi onda opet pokrenuo takav izvještaj ..... pretpostavljaš šta bi bilo :) ,u tom je bio porblem, samo nek mi nitko ne svajetuje da neda da se to uopče ispisuje ili šta ako se slučajno klikne jer kad je tako velik broj zapisa program pita dva puta, a rješenje sam već gore napisao

Code:

dataset.tablica.clear();
dataset.tablica.dispose();
GC.Collect();
GC.WaitForFinalize();


Citat:

Najbolji odgovor bi bio da jednostavno ne otvaraš toliki broj zapisa osim ako to nije apsolutno neophodno. Ako koristiš bazu, filtriranje se vrši unutar same baze, pa čak i da nije na nekom super-serveru - biće znatno brže od tvog post-procesiranje podataka .


- filtriranje se i radi na samoj bazi tj. na serveru, i ne uzimam toliki broj zapisa kad se podaci prikazuju u gridu na formi, tj. onda ih uopce nije moguće uzeti iz rzumljivih razloga, al možda čovjek zbilja želi ispisat sve to (jako teško) i zato sam napravio tako da kad je u pitanju velik broj zapisa da se prethodno upozori, (znači nije nehotice kliknuo), i tu se ne radi o nikakvom post-procesiranju podataka, nego najobičnije datasetu koji kad sam ga napunio sa velikim brojem slogova, memorija koju je to zauzelo je ostala zauzeta i nakon zatvaranja izvještaja!

Citat:

GC ne pocisti memoriju bas skroz i ne onda kada bas ti to hoces


s ovim prvim se slažem, al primjer, ponekad mi oćisti (večinom) onoliko koliko je taj izvještaj po otvaranju zauzeoo, nakon zatvaranja istu količuni koju je on zauzeo oslobodi, a ponekad više?-to mi je čudno!?!

sa drugim djelom se ne slažem jer postoje metode za forsiranje sakupljanja smeča klase GC!

pozdrav!

----Roberto----
 
Odgovor na temu

[es] :: .NET :: .NET Desktop razvoj :: Problem sa memorijom- C#

[ Pregleda: 2427 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

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