2011-07-25 12 views
6

Używam programu, który buduje bardzo duży obiekt, i bardzo skorzystałbym z przydzielenia ponad 2 GB pamięci do tego procesu. Z góry dziękuję.Jak mogę przydzielić więcej niż 2 GB pamięci do procesu w systemie Windows?

+0

Chociaż może to uczynić program łatwiej napisać, przeznaczając 2GB + fragmentów pamięci z pewnością doprowadzi do gorszej aplikacji dla użytkownika. – JaredPar

+0

Jak zbudować obiekt o pojemności 2 GB? – Gabe

+0

@gabe tablica jest najbardziej oczywistym przykładem. –

Odpowiedz

3

Wygląda na to, że odnosisz się do limitu 2 GB w pamięci wirtualnej w 32-bitowym systemie Windows. Nie można obejść tego ograniczenia w systemie 32-bitowym.

+0

Możesz użyć przełącznika/3gb w pliku boot.ini config i zaznaczyć proces "Duża przestrzeń adresowa" ... ale próba załadowania 2 GB pamięci w systemie 32-bitowym nie jest łatwa zadanie dla natywnego lub zarządzanego kodu. –

+2

@alexei Administrator urządzenia może zrobić/3 GB, ale aplikacja nie może –

6

Nie można przydzielić pojedynczego obiektu (lub tablicy), który jest większy niż 2 GB, jest to ograniczenie CLR. Będziesz musiał podzielić obiekt na kawałki.

+0

, więc przypuśćmy, że mam obiekt 3 GB, który podzielę na 6 obiektów o pojemności 0,5 GB, czy nie przekroczyłoby to limitu 2 GB? Dzięki jeszcze raz. – abw333

+0

I, TBH, jeśli próbujesz zarządzać obiektem o takim rozmiarze, musisz trochę przemyśleć. –

+0

@Schroedingers Cat Bardzo rozsądne jest, aby przydzielić duże obiekty dla niektórych algorytmów. –

5

. NET Framework 4.5 umożliwia tworzenie macierzy większych niż 2 GB na 64-bitowych platformach. Ta funkcja nie jest domyślnie włączona, musi być włączona poprzez plik konfiguracyjny za pomocą elementu gcAllowVeryLargeObjects.

http://msdn.microsoft.com/en-us/library/hh285054(v=vs.110).aspx

+0

Czy to jedyny sposób? Naprawdę nie chcę przełączać się na VS2012, jeśli nie muszę. –

Powiązane problemy