|
Тема |
Re: Странно управление на паметта [re: Pechenia] |
|
Автор | nmm (Нерегистриран) | |
Публикувано | 15.12.09 22:59 |
|
|
Така....
Мина доста време, мога смело да кажа че leaks вече няма. Използвах първо Eureka, после (и за постоянно останах) с MemCheck.
За съжаление проблема почти не се реши.
Основните гърмежи "Out of memory" идват от TIB компонентите, по специално TIbDataset и TIBQuery. Проблема идва при зареждане на много или малко записи, с често close/open на датасетите. Не знам уСера колко записа иска да дръпне, за да мога да упралявам динамично единствената настройка на компонента за паметта(BufferChunks).
Ситуациите са две:
1. отваряне на големи датасети ( с по 50к записи вътре) за да успея да ги отворя увеличавам BufferChunks na 20000 (ако е дефаултното 1000 директно гърми с OOM). На второто или третото отваряне на датасета ООМ е на лице, дори и с тази стойност 20000 за BufferChunks.
2. Също така, ако вдигна BufferChunks, когато отварям малки датасети, пак ми гърми с ООМ, да речем сетвам го на 5000 защото искам да отворя датасета веднъж с много записи (с 10000 записа) и 10 пъти с малко (20) записа. При така увеличения BufferChunks, дори и да не зареждам много записи, на 5-6 отваряне отича работата.
Предполагам най смислено е да сменя компонентите с FIBplus, но проекта е голям а автоматичнота "подменячка" GReplace не може да се справи да замени TIB s FIB. Така че това автоматично отпада ако трябва да се сменят ръчно, е равносилно на пренаписване.
Мисля си няма ли начин за "заграбя" много памето още на отваряне, за да намалят проблемите от този род. Реално windowsa има още свободна памет, нещо delphi-то(аз) не се справя с преалокацията.
|
| |
|
|
|