2017-11-08 11 views
-1

.NET Core 콘솔 앱으로 일련의 솔루션을 성공적으로 배포했습니다. 이들은 정상적인 상황에서 성공적으로 실행되지만 종종 데이터로드 (여러 액세스를 위해 메모리에 유지하기 위해 .ToList()를 사용하는 EntityFramework Core 쿼리 사용)가 오류없이 프로세스를 불고있는 것처럼 보입니다. 누구든지 알고 있어야하는 .NET Core C# 콘솔 응용 프로그램에서 설정된 메모리 또는 프로세스 제한을 알고 있습니까? 나는 결코 호스팅 기계에서 CPU 또는 메모리를 초과하지 않습니다. 그것은 그 목록에 null 객체 예외를 수행 할 엄청난 쿼리를 사용하여 코드에서 이전에 실행 된 .ToList() 후에 처음으로 액세스 된 목록 인 경향이 있습니다..NET Core 콘솔 앱의 메모리 한도가 있습니까?

이 시점에서 .NET Core 2.0.0 SDK입니다.

게시 된 제한 사항이 우수하다는 것을 알고있는 경우. 나는 또한 법의학을하기 위해 MiniProfiler를 사용하려고 노력할 것입니다. TIA.

+1

어쩌면 32 비트로 앱을 실행하고 있습니까? 다음 32 비트 제한이 적용됩니다 .. –

+0

좋은 질문 마틴. 그것을 체크 할 것입니다 – dodegaard

+0

감사합니다 @MartinUllrich. 이것에 대한 아주 기본적인 질문을하시는 것을 감사하십시오. AnyCPU는 충분하지만 직접 정의를 위해 x64로 바로 갈 필요가 있다고 생각했습니다. – dodegaard

답변

1

이 질문에 대한 답은 두 가지입니다. 먼저 x64 대 AnyCPU 로의 변경이 일부 천장을 증가 시켰지만 두 번째로 EntityFramework Core의 .Include() 메소드는 아껴서 사용하고 프로파일 링해야합니다. 이것은 메모리 내 그래프도 분해했습니다. 그래서 예. 두 사람이 내 질문을 다운 그레이드 한 간단한 질문은 간단한 대답일지도 모르지만 악의적 인 것으로 나타났습니다. 도우미 방법인데도 제대로 프로파일 링 및 사용되지 않으면 당신을 해칠 수 있습니다.

+1

이것은'IQueryable <>'인터페이스가 암시 적으로'IEnumerable <>'으로 변환되고 SQL 쿼리의 일부가 아닌 .NET에서 코드가 실행될 때도 발생할 수 있습니다. 이는 효과적으로 전체 데이터베이스를 쿼리 결과를로드하는 것입니다. –