問題タブ [boehm-gc]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
1185 参照

c++ - プログラムの一部にのみBoehmガベージコレクターを使用することは可能ですか?

LinuxJournalでBoehm-Demers-Weiserガベージコレクタライブラリに関する記事を読みました。自分の参照カウントの実装の代わりに、ライブラリで使用するのは興味深いことです。

質問が1つだけあります。共有ライブラリにのみgcを使用し、メインアプリケーションでmalloc / freeを使用することは可能ですか?gcがヒープをチェックする方法がよくわからないので、その場合のgcのパフォーマンスと起こりうる副作用について心配しています。

0 投票する
2 に答える
716 参照

c - Boehm GCでasprintfを使用するにはどうすればよいですか?

私の知る限り、asprintfはmallocを呼び出します。mallocをBoehmGCに置き換えた場合でも、asprintfを呼び出すと、従来のmallocが呼び出されます。少なくとも、valgrindが私に言っているのは次のとおりです。

これがmallocマクロです。

そしてここにvalgrindレポートがあります:

これがmalloc呼び出しの発信元のコードです。

回避策は、asprintfを使用してから、mallocを使用してコピーし、プリミティブ関数の代わりにmallocマクロが使用されるようにすることです。

それはばかげているように思えます-それは不必要なコピーの束を含み、またコードの目が痛いIHMOでもあります。では、Boehm GCを使用しながら、ネイティブのmallocを呼び出す可能性のあるasprintfやその他のシステムライブラリを安全に使用する方法はありますか?代わりに使用する必要があるasprintfの代替手段はありますか?

0 投票する
1 に答える
614 参照

c - Boehm GC:破壊されたヒープオブジェクトを効果的にデバッグする方法は?

プログラムを実行すると、Boehm GC(GC_DEBUGが定義されている)から次のエラーが発生します。

上記は約20回続きます。

奇妙なことに、私はプログラムに何も問題を見つけることができません、それはそれが想定されていることをし、そしてクラッシュしません。

プログラムをコンパイルしてGCを無効にすることができます。その後、valgrindを実行できますが、奇妙なことに、valgrindは問題を検出しません。

それはベームGC内の問題である可能性があります-私はそれを無視する必要がありますか?

これを効果的にデバッグする方法を誰かが知っていますか?

または、上記のメッセージが正確に何を意味するのかを誰かが説明できますか?

0 投票する
1 に答える
648 参照

garbage-collection - Boehm とタグ付きポインター

タグ付きポインターは、動的言語を実装する際の一般的な最適化です。ポインターの下位 2 または 3 ビットが常にゼロになることを意味するアラインメント要件を利用し、それらを使用して型情報を格納します。

Boehm ガベージ コレクターを使用しているとします。これは基本的に、ポインターのように見えるもののアクティブ データを調べることによって機能します。タグ付きポインターは、下位​​ビットが非ゼロであるという意味で、ポインターのようには見えません。

Boehm を使用している場合、タグ付きポインタを破棄する必要がありますか? または、この問題を回避する方法はありますか?

0 投票する
1 に答える
2536 参照

c++ - Boehm GC ++ガベージコレクター:ヒープセクションが多すぎるMAXHINCRまたはMAX_HEAP_SECTSを増やします

アプリケーションでBoehmC++ガベージコレクターを使用しています。このアプリケーションは、レーベンシュタイン決定性有限オートマトンPythonプログラムを使用して、2つの文字列間のレーベンシュタイン距離を計算します。gcc4.1.2を使用してCentosLinuxのバージョンでPythonプログラムをC++に移植しました。

最近、アプリケーションを10分以上実行した後、SIGABRTエラーメッセージが表示されることに気付きましたToo many heap sections: Increase MAXHINCR or MAX_HEAP_SECTS。誰かがこの問題を修正または回避する方法を知っているかどうか疑問に思いました。

これが私のgdbスタックトレースです。ありがとうございました。


アップデート:

BoehmガベージコレクタのソースファイルとヘッダーファイルをToo many heap sections: Increase MAXHINCR or MAX_HEAP_SECTS調べたところ、GNUmakefileのCFLAGSセクションに‑DLARGE_CONFIGを追加することで、次のエラーメッセージを修正できることがわかりました。

GNUmakfileに対するこの変更をテストしたところ、Too many heap sections: Increase MAXHINCR or MAX_HEAP_SECTSエラーメッセージが表示されなくなったことがわかりました。ただし、新しいセグメンテーション違反(コアダンプ)が発生しています。gdbを使用すると、GDBセグメンテーション違反が20行目の次の関数で発生していることがわかりました(注釈を付けました)。

セグメンテーション違反を修正するためにこの関数を変更することは可能かどうか疑問に思いました。ありがとうございました。

0 投票する
1 に答える
5476 参照

c - Boehm GC は C プログラムでどのように機能しますか?

Boehm GCをチェックしました。C/C++ の GC。

マークアンドスイープアルゴリズムを知っています。私が興味を持っているのは、C メモリ全体でポインターのみを取得する方法です。C メモリに関する私の理解は、単純なバイト配列にすぎません。メモリ内の値がポインタであるかどうかを判断することは可能ですか?

0 投票する
3 に答える
12704 参照

memory-management - 世代別ガベージ コレクションと増分ガベージ コレクションの違いは何ですか?

ガベージ コレクションの一時停止を高速化するためのアプローチは、どちらも (世代とインクリメンタル) 異なると思います。しかし、ジェネレーションとインクリメンタルの違いは何ですか? それらはどのように機能しますか?また、リアルタイム ソフトウェアに適しているのはどれですか?

また、Boehm GC はそれらのいずれかですか?

0 投票する
2 に答える
903 参照

c++ - Boehm GCに付属する「コード」ライブラリにより、未定義の参照エラーが発生します

cordBoehm GCを使用するプロジェクトがあるので、付属の文字列ライブラリを使用するのではないかと思いました。問題は、関数へのすべての呼び出しがcord「未定義の参照」エラーを引き起こすことです。

私は(これはLinuxシステムです)という名前のファイルを持っており、libcord.soCMake/usr/libにターゲットをgcとにリンクするように指示しましcordた。


コメント#1に応じて編集します。

からCMakeLists.txt

エラーメッセージから:


コメント#2に応じて編集します。

0 投票する
1 に答える
641 参照

boehm-gc - Boehm GC を使用している主要なプロジェクトはありますか?

主要なプロジェクトで Boehm GC が使用されているかどうか知りたいですか? ゲーム プロジェクトでこのガベージ コレクターを使用したことがあるかどうかに特に関心があります。そうでない場合、Boehm GC はゲーム プロジェクトには適していませんか?

この Boehm GC のような単純なコードで処理できるという単純な事実に感銘を受けました。

Boehm GC を使用してゲームを作成する際の注意事項はありますか?

ありがとう

0 投票する
3 に答える
1329 参照

c++ - ベームガベージコレクターの正確なモード

MonoのWebページで、BoehmGCを正確なモードで使用していることを読みました。私もC++でBoehmGCを使用していますが、ドキュメントやヘッダーには、正確なモードを示すものはなく、オンにする方法もありません。

それが実際にデフォルトで正確なモードを持っているかどうか、そしてそれをオンにする方法、またはそれがMono開発者によるある種の変更であったかどうかについての情報はありますか?