상당히 큰 두 배 배열 12000ish x 55000ish를 만들어야합니다. 불행히도 메모리 부족 예외가 발생합니다. 자바로 개발하고 메모리 설정을 변경할 수있었습니다. C#으로 가능합니까 아니면 불가능합니까? VS2008을 사용하고 있습니다.큰 배열 선언시 OutOfMemoryException
답변
각 double
은 8 바이트이므로 5GB가 넘는 단일 배열을 할당하려고합니다. CLR은 64 비트 CLR의 경우에도 개체 당 제한이 약 2GB IIRC입니다. 즉, 사용 가능한 메모리의 총량이 문제가되지는 않습니다 (비록 에 충분한 메모리가있는이 아니라면 분명히 문제가 발생할 수 있지만).
작은 배열로 분할하는 것이 좋습니다 (아마도 몇 가지 설명의 외관 뒤에). 단일 배열에 대한 한계를 해결할 방법이 없다고 생각합니다.
편집 : 당신은 배열의 배열에 갈 수 - 가변 배열 일명 :
double[][] array = new double[12000][];
for (int i = 0; i < array.Length; i++)
{
array[i] = new double[55000];
}
가 당신에게 허용 할 것인가?
(당신은 그 같은 당 개체 크기가 문제가있는 것처럼 직사각형 배열 (double[,]
)를 사용할 수 없습니다.)
음, 메모리가 부족합니다 (일부 프로그램 닫기) 또는 메모리 할당 제한 (약 2Gb)에 도달했습니다.이 메모리는 인접한 블록이어야합니다. 64 비트 컴퓨터를 사용하면 더 많은 메모리를 사용할 수 있습니다. 또는 응용 프로그램을 대용량 주소로 인식 할 수 있다고 생각합니다.이 경우 가능한 경우이를 수행하는 방법을 알려줍니다.
큰 주소 인식을 위해/3GB 스위치를 Boot.ini 파일에 추가 했으리라 믿습니다.
을 사용하면 2GB의보다 큰 개체를 만들 수 없기 때문에 당신이 MemoryMappedFile를 사용하려고 할 수 있습니다 필요한 크기의 메모리 덩어리로 작업하십시오.
var data = MemoryMappedFile.CreateNew("big data", 12000L * 55000L);
var view = data.CreateViewAccessor();
var rnd = new Random();
for (var i = 0L; i < 12000L; ++i)
{
for (var j = 0L; j < 55000L; ++j)
{
var input = rnd.NextDouble();
view.Write<double>(i * 55000L + j, ref input);
}
}
총 메모리가 충분한 지 제공, 당신은 작은 배열의 무리를 만들고, 하나의 IList<T>
, 또는 다른 색인 인터페이스에 그들을 배치하여 LOH의 분열로 인한 메모리 예외 부족 방지 할 수 있습니다.
BigArray<T>, getting around the 2GB array size limit
크레딧 : this post (C# chunked array) 여기
그것을 설명하는 링크입니다.- 1. 큰 배열 C# OutOfMemoryException
- 2. OutOfMemoryException 큰 파일 처리
- 3. OutofMemoryException - 매우 큰 이미지로드 중
- 4. OutOfMemoryException
- 5. PL에서 선언시 변수의 기본값
- 6. OutOfMemoryException SqlCommand VarChar (최대)
- 7. 에서 OutOfMemoryException
- 8. outofmemoryexception 디버깅
- 9. kSOAP의 OutOfMemoryException
- 10. OutOfMemoryException FileStream을 사용하여 큰 파일을 500MB 전송 ASPNET
- 11. 데이터베이스에 큰 배열 저장
- 12. 할당 큰 (5000) 배열
- 13. 큰 동적 배열 ++
- 14. array_diff로 큰 배열 처리
- 15. 변수 선언시 상수 값이 필요합니다
- 16. 코드 검토 : OutOfMemoryException 문제
- 17. 클라이언트로의 큰 바이트 배열 전송
- 18. 크기가 매우 큰 배열 할당
- 19. 큰 배열 크기의 세그먼트 오류
- 20. OutOfMemoryException 모바일 장치에서
- 21. outOfMemoryException 게임 안드로이드에서
- 22. OutOfMemoryException - 아이디어 부족 II
- 23. OutOfMemoryException : 1GB를 쳤을 때
- 24. OutofMemoryException in vb.net
- 25. ImageList/Image OutOfMemoryException
- 26. luntbuild + maven + findbugs = OutOfMemoryException
- 27. 에서 OutOfMemoryException, 대형 개인 정보
- 28. OutOfMemoryException 500MB FileStream을 읽을 때
- 29. 인스턴스화/선언시 클래스의 상위 유형을 지정 하시겠습니까?
- 30. SQL CE OutOfMemoryException 웹 서비스를 사용 중입니다.
A * 상당히 * 큰 배열? :) – Groo
"기본 메모리 부족"데이터 구조 (예 : 데이터베이스)를 고려해 보시기 바랍니다. 왜 그렇게 큰 double array를 저장해야합니까? – bitxwise
나는 "공정하게"단어의 선택에 너무 웃었다. –