2017-11-08 7 views
-1

私は.NET Coreコンソールアプリケーションとして一連のソリューションを正常に導入しました。これらは通常の状況下では正常に動作しますが、データロード(複数のアクセスに対してメモリ内に保持するために.ToList()を使用したEntityFrameworkコアクエリを使用)がエラーなしでプロセスを吹き飛ばしているようですが、誰もが知っている.NET Core C#のコンソールアプリケーションで確立されたメモリやプロセス制限を知っていますか?私は決してホスティングマシン上のCPUまたはメモリを超えません。それは、コードの前のところで実行された.ToList()の後で最初にアクセスされたリストが、それを燃料とする膨大なクエリでリスト上でnullオブジェクト例外を実行する傾向があるという傾向があります。.NET Coreコンソールアプリケーションのメモリの上限はありますか?

ここは.NET Core 2.0.0 SDKです。

優れた公表された制限がわかっている場合。私は、法医学のためにMiniProfilerを使ってみるつもりです。 TIA。

+1

32ビットでアプリを実行していますか? 32ビットの制限が適用されます。 –

+0

大きな質問Martin。それをチェックします – dodegaard

+0

ありがとう@MartinUllrich。これについて非常に基本的な質問をしていただければ幸いです。私はAnyCPUで十分だと思ったが、おそらく直接定義のためにx64に直接行く必要があった。 – dodegaard

答えて

1

この質問に対する回答は2倍でした。まず、x64とAnyCPUの両方に変更すると天井がいくらか増加しましたが、第2に、EntityFramework Coreの.Include()メソッドを控えめに使用してプロファイリングする必要があります。これにより、インメモリグラフも分解されました。だから、2人が私の質問をダウングレードした簡単な質問は簡単な答えだったかもしれませんが、ヘルパーメソッドであるインクルード()は、正しくプロファイリングされ使用されていないとあなたを傷つける可能性があります。

+1

これは、 'IQueryable <>'インターフェイスが暗黙的に 'IEnumerable <>'に変換され、コードがSQLクエリの一部にならずに.NETで実行される場合にも発生します。クエリ結果を読み込むだけです。 –

関連する問題