DataSet (DataTable) a uvolnovanie z pamäte – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

DataSet (DataTable) a uvolnovanie z pamäte – .NET – Fórum – Programujte.comDataSet (DataTable) a uvolnovanie z pamäte – .NET – Fórum – Programujte.com

 

manro
~ Anonymní uživatel
9 příspěvků
10. 7. 2009   #1
-
0
-

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...

Nahlásit jako SPAM
IP: 147.232.180.–
dannyk0
Věrný člen
10. 7. 2009   #2
-
0
-

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.

Nahlásit jako SPAM
IP: 85.135.97.–
Jedu v c++,c#,assembler,ASP.NET,PHP,databaze,bezpecnost softwaru[br] -----------------------------------------------------------[br] Muj blog o programovani,hudbe a vsem moznem,co najdu na netu :) [br] http://dannyk.aspone.cz[br] -----------------------------------------------------------[br] Na foru mam nejake prispevky pod nickem Master,tak jen pro upresneni :)
manro
~ Anonymní uživatel
9 příspěvků
10. 7. 2009   #3
-
0
-

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)

Nahlásit jako SPAM
IP: 147.232.180.–
dannyk0
Věrný člen
10. 7. 2009   #4
-
0
-

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.

Nahlásit jako SPAM
IP: 85.135.97.–
Jedu v c++,c#,assembler,ASP.NET,PHP,databaze,bezpecnost softwaru[br] -----------------------------------------------------------[br] Muj blog o programovani,hudbe a vsem moznem,co najdu na netu :) [br] http://dannyk.aspone.cz[br] -----------------------------------------------------------[br] Na foru mam nejake prispevky pod nickem Master,tak jen pro upresneni :)
rybar730
Newbie
14. 7. 2009   #5
-
0
-

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.

Nahlásit jako SPAM
IP: 131.207.242.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 8 hostů

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

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý