Zdravím,
mám dosť veľký problém. Implementujem aplikáciu (IS), ktorá zobrazuje množstvo dát z databázy v DataGridView (DGW). Tabuľky obsahujú pomerne dosť záznamov (cca 50k) a sú v programe sú ukladané do DataSetu (DS), plneného cez adaptér databázy a následne do DGW. Jednak by som sa chcel opýtať na možnú optimalizáciu, keďže fill DS trva značný čas (rovnakú tabuľku v DBF súbore loadne stare foxpro vpodstate okamžite (aj keď zo značne iným prístupom k problému)).
Hlavným problémom je, že dáta sa po ukončení pohľadu na DGW nevymažú z pamäte. Dispose na DS a GC.Collect() nepomáha, DS.Clear() už dačo spraví aj keď zjavne neodstráni všetko. Alebo je to tak, že Dispose na každý jeden objekt si musím implementovať sám? Nechápem prečo keď zruším nejaký kontajner (napríklad Panel), neuprace mi všetko čo je v ňom, pri oknách to zjavne funguje. Využitú pamäť meriam cez GC.GetTotalMemory() poprípade triviálne cez Správcu úloh (čo sa pre .NET aplikácie zjavne nedoporučuje ako som sa dočítal). Komponenty vytváram runtime v kóde (DGW, obslužný menutoolstrip)...
Poraďte mi prosím, lebo už fakt neviem...
Fórum › .NET
DataSet (DataTable) a uvolnovanie z pamäte
FoxPro jestli se nepletu, tak nenacita vsech 50k zaznamu, ale jen cast (treba 2000 a zbytek podle potreby) a tu je kamen urazu. DataSet je delany pro to, aby se nemusela volat db a vsechna data byla v pameti a mohla se zpracovat. Tim padem dataset vydoluje vsechna data a musi je nekam ulozit (vytvorit radky, bunky, prekopirovat data) a to taky chvili trva. Tady me moc optimalizaci nenapada, pokud jsou potreba vsechna data najednou :/
S tim mazanim z pameti presne nevim, proc ti to GC nemaze, ale nekdy mu trva, nez to uvolni nebo ti to nekde neco drzi a nevis o tom.
Este ma napadlo ci pre vecsie objemy dat nie je vhodnejsie pouzit trochu krkolomnejsi DataReader namiesto DataAdapteru. Mate niekto skusenosti s porovnanim vykonosti? (viz. http://www.bestdotnet.com/2007/11/dataadapter-vs-datareader.html)
Nevim, jak je to s vykonnosti, ale DataReader je pouze na jednosmerne cteni, jednou prectes, neco s tim udelas a bye bye. DataAdapter by se mel starat o obousmerne zpracovani.
Cus hele muzu ti sdelit jen subjektivni pocit nijak jsem to nemeril ale z adapteru jsem presel na Reader a zda se mi to sviznejsi...Nacitam si vzdy jen pozadovanan data ne sice tolik ale z obrovske tabulky (na kterou jsem pripojen pres ODBC).
Pokud je nepotrebuju pouzivam Clear() jak pises. Taky nejcasteji v kombinaci s DataGridVeiw.
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
.NET a uvoľňovanie objektov — založil mylan4
Práce s DataSet — založil paashi
Z MySQL do ListView pres DataSet? — založil JiriVavru
Sprava pamate — založil Martin
Datatable a ajax — založil Tomas
Moderátoři diskuze