여러가지 테스트 중인데,
32비트 기준임.
각 테스트간에 할당하고 메모리 확인후 해제 매번 시켜줌.
1. VB6 에서 2억개의 double형 동적메모리배열 할당가능.
(8바이트 1억개면 8억바이트로서 800MB가 정도가 되고, 2억개면 1600MB으로 32비트 제한인 2GB에 근접)
2. C++(MFC)에서 2억개의 double형 동적메모리배열 할당가능.(상동)
3. C# 에서 2억개의 double형 동적메모리배열 할당하려고 하면 out of memory 오류 뜸.
테스트해보니, 1억개도 처음에는 되는데 두번째는 또 아웃오브메모리.
혹은 작은양으로 살짝살짝 하다가 1억개정도 연속하면 괜찮기도 한데, 또 수틀리면 아웃오브메모리.
존나 조심조심하고 GC.Collect 같은거 떡칠했는데도 그냥 다 씹고 VB6만도 못한 병신스런 메모리 관리수준을 보여줌.
아니 어떻게 된게 VB6보다 메모리 처리가 왜 그렇게 쳐 구린거임?
꼬라지보니 제한이 2GB도 아니고 걍 1GB에, 심지어 그걸 연속 할당과 할당해제를 못 버티고 아웃오브 메모리 쳐뱉음.
어떻게 기본자료형인 double형 하나 제대로 관리를 못하는거???
다른 자료형은 어떤지 모르겠지만, 아마 비슷할거라 생각한다.
어처구니 없어서 더 테스트도 못하겠어.
뭘 어째야됨?
VB6도 2억개 double형 할당 가능한데, C#은 1억개도 불안하면 어떻게 씀 대체???
닷넷으로 짠거 소스 까봐라 지가 병신 같이 짰겠지
혹 VB6에서도 해당 메모리 영역을 전부 사용해 보셨는지 ㅇㅅㅇ; Lazy alloc으로 가려졌던건 아닙니까?
단순 new double[2억] 이런걸 어떻게하면 병신으로 짤 수 있냐? 난 그게 더 궁금하다.