Witam!
Tworzę program rozwiązujący "piętnastkę" (fifteen puzzle) za pomocą dfs'a i bfs'a. Obmyśliłem że zamiast marnować miejsce w pamięci na drzewo będę przechowywał tylko odwiedzone stany w postaci listy liczb uint64. I tu się pojawia problem. Mogę wrzucić do listy maksymalnie ok 67 milionów stanów (512MB) - może się okazać za mało. Powyżej tej ilości wyrzuca OutOfMemoryException. System 32 bitowy, 3GB ramu, wolnego miejsca w ramie jest jeszcze od groma. Na mocniejszym komputerze (też 32 bitowy) taki sam efekt. Próbowałem rozłożyć to na kilka list - efekt ten sam - 512MB zallokowane i koniec. Wiem że istnieje limit 2GB dla pojedyńczego procesu, ale przecież jestem od tego limitu daleko. W javie istnieje podobne ograniczenie które można ominąć za pomocą parametru -Xmx[rozmiar]m.
Istnieje jakiś sposób na ominięcie tego problemu? Wielkie dzięki za wszelką pomoc.
EDIT:
Udało mi się ominąć problem. Okazało się że nie wykorzystuję nawet 20mb pamięci...
Ale tak na przyszłość pytanie pozostawiam aktualne.