問題タブ [tcmalloc]
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.
linux - プロセスごとの仮想メモリ統計
私は非常に奇妙なメモリリークの問題に取り組んでおり、これにより次の問題が発生しました。特定の操作が行われた後に仮想メモリのサイズを増やすプロセスがシステムで実行されています。問題がメモリ リークの問題ではないことを確認するために、現在実行中のプロセス。システム全体で同じ統計情報を提供する vmstat コマンドを認識していますが、確認のために、プロセスごとの vmstat コマンドが必要です。 これを行う方法を知っている人はいますか?
c++ - __unregister_atfork と TCMalloc を含むプログラムのデッドロック
次の C++ プログラムを考えてみましょう。exit
最初に呼び出したスレッドがプログラムを終了することを期待しています。でコンパイルするとこうなりg++ -g test.cxx -lpthread
ます。ただし、TCMalloc ( g++ -g test.cxx -lpthread -ltcmalloc
) に対してリンクすると、ハングします。なんで?
スタック フレームを調べると、最初に呼び出したスレッドが、何らかの参照カウント変数が 0 になるのを待っている状態でスタックしていることが示唆されます。以前にミューテックスを取得したため、他のすべてのスレッドはデッドロック状態になりexit
ます。__unregister_atfork
私の推測では、tcmalloc の atfork ハンドラと私のコードの間に何らかの相互作用があると思われます。
CentOS 6.4 と gperftools 2.0 でテスト済み。
編集:exit
問題は、スレッドセーフではない可能性があると思います。POSIXによると、exit
スレッドセーフです。ただし、glibc のドキュメントには、これはスレッドセーフでexit
はないと記載されています。
c++ - tcmalloc を使用した C/C++
tcmalloc を使用してアプリケーションをコンパイルしようとしています。-ltcmalloc
したがって、使用手順で推奨されているように、コンパイラ フラグに追加します。アプリケーションを再実行した後、パフォーマンスの違いは見られませんでした。
この質問の著者が言及しているように、malloc の呼び出しが置き換えられたかどうかを確認するにはどうすればよいですか。コンパイルされたアセンブラ コードを見てみましたが、まだ malloc の呼び出しがありました。
前もって感謝します
tcmalloc - TCMalloc の使用方法
TCmalloc
まず、 Ubuntuにインストールする方法を知りたいです。次に、を使用するプログラムが必要TCmalloc
です。TCmalloc
次に、よりもうまく機能していることを示す小さなプログラムが必要ですPTmalloc
。
c++ - グローバルな new/delete および malloc/free を tcmalloc ライブラリでオーバーライドする
new/delete と malloc/free をオーバーライドしたい。アプリケーションに tcmalloc ライブラリがリンクされています。私の目的は、統計を追加することです。
new から malloc を呼び出しています。以下は、グローバルな例です。
新規/削除オーバーライドは正常に機能しています。
私の質問は、たとえば malloc を直接使用した他のファイルに何が起こるかです
私のマクロがヘッダーファイルにないため、この malloc 呼び出しが get をどのように解釈するか。
c++ - tcmalloc が dlopen 経由で提供される関数名を出力しない理由
次のプロジェクトがあります: main.cpp
共有.cpp:
およびメイクファイル:
このテスト プログラムをデバッグするために tcmalloc を使用します。このテスト プログラムは動的に libshared.so:foo をロードし、it.run コマンドを実行します: LD_PRELOAD=/usr/local/lib/libtcmalloc.so HEAPCHECK=normal ./a.out
1 つの最大のリーク:
- ローカル ファイル ./a.out を使用します。
- 割り当てられた 1 つのオブジェクトで 40 バイトのリーク:
- @ 7fe3460bd9ba 0x00007fe3460bd9ba
- @400b43 メイン
- @ 7fe346c33ec5 __libc_start_main
- @ 400999 _start
- @ 0_init
foo 関数で line ではなくアドレス 0x00007fe3460bd9ba を取得するのはなぜですか? 助けてください
Ps LD_PRELOAD=.../tcmalloc.so で gdb を使用しようとしましたが、次のメッセージが表示されます。