[ roberto555 @ 15.02.2007. 12:54 ] @
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]
[ sstanko78 @ 19.02.2007. 06:02 ] @
GC ne pocisti memoriju bas skroz i ne onda kada bas ti to hoces
[ TheAlas @ 19.02.2007. 09:19 ] @
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 .
[ roberto555 @ 19.02.2007. 10:47 ] @
ne radi se o tome, krivo ste skužili,,, no sredio sam u međuvremenu,,,

hvala na trudu!
[ VerbatimBOT @ 19.02.2007. 18:36 ] @
Pa podeli to rešenje i sa nama :)
[ roberto555 @ 20.02.2007. 09:33 ] @
..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!