c# your Mono:ヒープセクションが多すぎます。アプリケーションでメモリが4GBを超えると、MAXHINCRまたはMAX_HEAP_SECTSが増加します。




windows linux mono (2)

mono 2.10.2以降を使用してください(おそらく、新しいGCにオプション--gc = sgenを付けて)。 あなたのモノバージョンは非常に古いです。

私は8GBのメモリを搭載したbitnami Linuxでモノラルアプリケーションを実行しています。 それは動作するように多くのRAMを取ることになっている洗練されたファイル合併アプリケーションです。 しかし、4GB以上のRAMが必要になるたびに、次のエラーメッセージが表示されてクラッシュします。

Too many heap sections: Increase MAXHINCR or MAX_HEAP_SECTS
Stacktrace:

  at (wrapper managed-to-native) object.__icall_wrapper_mono_array_new_specific (intptr,int) <0x0005e>
  at (wrapper managed-to-native) object.__icall_wrapper_mono_array_new_specific (intptr,int) <0x0005e>
  at System.Collections.Generic.Dictionary`2<string, System.Nullable`1<int>>.InitArrays (int) <0x00040>
  at System.Collections.Generic.Dictionary`2<string, System.Nullable`1<int>>.Init (int,System.Collections.Generic.IEqualityComparer`1<string>) <0x00091>
  at System.Collections.Generic.Dictionary`2<string, System.Nullable`1<int>>..ctor () <0x0001b>
  at lawyerGatherBot.Merger.LawyerRepresentation..ctor (string) <0x00080>
  at lawyerGatherBot.Merger.MergeLawyerRecords.Map (System.Collections.Generic.IEnumerable`1<string>) <0x00167>
  at lawyerGatherBot.Program.Main (string[]) <0x00161>
  at (wrapper runtime-invoke) <Module>.runtime_invoke_void_object (object,intptr,intptr,intptr) <0x00082>

Native stacktrace:

    mono() [0x48bd6b]
    /lib/libpthread.so.0(+0xf8f0) [0x7f6c4198a8f0]
    /lib/libc.so.6(gsignal+0x35) [0x7f6c4162ba75]
    /lib/libc.so.6(abort+0x180) [0x7f6c4162f5c0]
    mono() [0x5da188]
    mono() [0x5d7ec0]
    mono() [0x5d8349]
    mono() [0x5d8534]
    mono() [0x5d86f1]
    mono() [0x5d3571]
    mono() [0x5d4752]
    mono() [0x5d50e5]
    mono(mono_array_new_specific+0xba) [0x53716a]
    [0x40df9f2f]

Debug info from gdb:


=================================================================
Got a SIGABRT while executing native code. This usually indicates
a fatal error in the mono runtime or one of the native libraries
used by your application.
=================================================================

Aborted

モノ-Vの出力は次のとおりです。

Mono JIT compiler version 2.8.2 (tarball Tue Aug 30 18:06:04 UTC 2011)
Copyright (C) 2002-2010 Novell, Inc and Contributors. www.mono-project.com
    TLS:           __thread
    SIGSEGV:       altstack
    Notifications: epoll
    Architecture:  amd64
    Disabled:      none
    Misc:          debugger softdebug
    LLVM:          supported, not enabled.
    GC:            Included Boehm (with typed GC and Parallel Mark)

モノでメモリ集約型のアプリケーションを実行できるようにするにはどうすればよいですか?

*アップデート私はねじ込み、32ビットシステム用のアプリケーションをコンパイルしました。 したがって、このエラー。


私の理解では、このエラーはBoehm GCに由来しています。

まずこれを試してみてください。 以下のスクリプトを使用して、ソースからダウンロードしてビルドします。 スクリプトのconfigure部分で、次のように変更します。

./configure --with-large-heap = yes

設定したい他の設定の問題に加えてこれを行います。 これにより、LARGE_CONFIGフラグが設定されます。

それを手動で設定したい場合(私にはわからない)、以下の手順があります:

  1. モノソースをダウンロードし、ここでスクリプトを実行してください

http://www.integratedwebsystems.com/2011/08/install-mono-2-10-3-on-ubuntu-using-bash-script/

  1. 今戻って、次のコードを

build / mono-2.10.8 / libgc / include / gc_config_macros.h

#ifndef LARGE_CONFIG
#define LARGE_CONFIG
#endif
  1. 今すぐ/ mono-2.10.8をビルドして実行してください

sudoをインストールする

うまくいけば、これはあなたの問題を解決する新しいモノをコンパイルします。 結果のモノは/ optにあります

最も影響を受けるコードの一部はlibgc / include / private / gc_priv.hにありますが、メンテナーはLARGE_CONFIGフラグの条件をうまく入れているので、おそらくそれを処理するのが最善です。







mono