Potrzebuję załadować duże ilości bitmap do pamięci do wyświetlania w aplikacji WPF (przy użyciu .net 4.0). Tam, gdzie napotykam problemy, kiedy zbliżam się do około 1400 MB pamięci (otrzymuję to z listy procesów w menedżerze zadań).Wyjątek wyjątków w pamięci WPF podczas ładowania dużej ilości bitmap w pojedynczym wystąpieniu aplikacji. Czy istnieje limit?
To samo dzieje się niezależnie od tego, czy aplikacja jest uruchamiana na komputerze z 4 GB pamięci lub 6 GB (i innych konfiguracji, na których nie mam danych). Łatwo jest przetestować, zmniejszając załadowane obrazy i gdy działa na 1 komputerze, wtedy działa na nich wszystkich, ale gdy zawiesza się na jednym, to również działa na wszystkich.
Gdy zmniejszam liczbę obrazów i zezwalam aplikacji na ładowanie bez powodowania wyjątku pamięci, mogę uruchomić wiele wystąpień aplikacji (przekraczając 1,4 GB pojedynczej instancji) bez problemu, więc wydaje się, że jest ich kilka na instancję błąd limitu lub wystąpienia błędu z mojej strony.
załadować obrazów jak BitmapImage i są przechowywane albo w List<BitmapImage>
lub załadować do List<byte[]>
gdzie są następnie używane w pęczku warstwowych sekwencji (przy użyciu Writeablebitmap
)
Błąd occurrs kiedy ładunek obrazy nie są w użyciu. W powtarzalnym przypadku ładuję obrazy 600 640X640 i kolejne 200-300 mniejszych obrazów od 100X100 do 200X200, chociaż wydaje się, że jest to ogólna liczba bitów.
Więc moje pytania to:
* Czy jest jakiś wbudowany na ograniczenia pamięci procesu w takiej sytuacji?
* Czy istnieje lepsza technika ładowania dużej ilości danych obrazu do pamięci?
Dzięki, Brian
Czy używasz 32- lub 64-bitowej aplikacji i systemu operacyjnego? –
Mam 64-bitowy system Windows 7 i kompiluję dla 'x86' - uwaga wcześniej wstawiłem "dowolny procesor", ale x86 jest formatem kompilacji – Brian