Napisałem program który wczytuje duże binarne pliki (max 200 MB) i wyciąga z nich pewne informacje i wrzuca do obiektu listbox. Program działa dobrze dla plików do 50 MB powyżej wyskakuje outOfMemoryException. Podejrzałem w taskmanager że wysypuje się gdy zajmie ok. 100MB
Przecież to wcale nie jest dużo ?
Co mogę zrobić zeby móc zaalokować więcej pamięci (do 300-400 MB) ?
A musisz wrzucac cale pliki do pamieci? Nie wystarczy ich przegladnac? Ladowanie 200MB pliku do pamieci w calosci to jest duzo.
masz racje, nie jest to efektywnie napisane w tym momencie
wiec bede potrzebował troche mniej ale i tak dużo !
interesuje mnie czemu nie moge zaalokowac wiecej niz 100 MB, bo to naprawde bardzo mało
Róman napisał(a)
Program działa dobrze dla plików do 50 MB powyżej wyskakuje outOfMemoryException. Podejrzałem w taskmanager że wysypuje się gdy zajmie ok. 100MB
Przecież to wcale nie jest dużo ?
To jest dużo, wnioskuje ze masz 1,5GB lub 2GB pamięci skoro ci sie sypie powyżej 50mb. Ja ladowalem max pliki okolo 100mb i miałem outOfMemoryException i do tego komunikat z Windowsa coś w tym stylu Brak Pamieći :-[
Róman napisał(a)
i wyciąga z nich pewne informacje i wrzuca do obiektu listbox.
Napisz co chcesz wyciągnąć może zrobisz to bez wrzucania w pamięć.
pozdrawiam
Zamiast z pamięci czytaj i sprawdzaj prosto z pliku. Modyfikacji wiele nie będzie. Albo wrzucaj do pamięci plik kawałkami.
ok, nie ma problemu z taka przeróbka zebym wczytywał po kawałku i wrzucał do listbox czy richedit
ale i tak tych danych które muszą być wyświetlone w jednym momencie bedzie dużo
mam 1,5 gb ramu + 1,5 wirtualnej
myślałem ze jest jakis sposób na obejscie tego? W c++ spokojnie moge zaalokować więcej (aż do zapchania całej pamięci)
To trzeba wczytywać tylko to co jest aktualnie wyświetlane. To ci się powinno przydać:
Displaying large amount of data in DataGridView
Virtual Mode in the Windows Forms DataGridView Control
ok poprawiłem wczytywanie i na razie działa w tej postaci jednak zawsze moze sie trafic plik przy którym sie wysypie
sytuacja o której pisałem zdarzała sie mimo ze miałem jeszcze mnóstwo wolnej pamieci np. zajete 700 mb na jakies ~3300 całości
wciąż dziwi mnie ze nie moge wiecej wrzucic do pamieci, w c++ mogłem dojśc do sytuacji z system wyswietlał komunikat "za mało pamieci.." tu sie nie da :(