問題タブ [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.

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

linux - プロセスごとの仮想メモリ統計

私は非常に奇妙なメモリリークの問題に取り組んでおり、これにより次の問題が発生しました。特定の操作が行われた後に仮想メモリのサイズを増やすプロセスがシステムで実行されています。問題がメモリ リークの問題ではないことを確認するために、現在実行中のプロセス。システム全体で同じ統計情報を提供する vmstat コマンドを認識していますが、確認のために、プロセスごとの vmstat コマンドが必要です。 これを行う方法を知っている人はいますか?

0 投票する
0 に答える
503 参照

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ないと記載されています。

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

c++ - tcmalloc を使用した C/C++

tcmalloc を使用してアプリケーションをコンパイルしようとしています。-ltcmallocしたがって、使用手順で推奨されているように、コンパイラ フラグに追加します。アプリケーションを再実行した後、パフォーマンスの違いは見られませんでした。

この質問の著者が言及しているように、malloc の呼び出しが置き換えられたかどうかを確認するにはどうすればよいですか。コンパイルされたアセンブラ コードを見てみましたが、まだ malloc の呼び出しがありました。

前もって感謝します

0 投票する
5 に答える
29715 参照

tcmalloc - TCMalloc の使用方法

TCmallocまず、 Ubuntuにインストールする方法を知りたいです。次に、を使用するプログラムが必要TCmallocです。TCmalloc次に、よりもうまく機能していることを示す小さなプログラムが必要ですPTmalloc

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

c++ - グローバルな new/delete および malloc/free を tcmalloc ライブラリでオーバーライドする

new/delete と malloc/free をオーバーライドしたい。アプリケーションに tcmalloc ライブラリがリンクされています。私の目的は、統計を追加することです。

new から malloc を呼び出しています。以下は、グローバルな例です。

新規/削除オーバーライドは正常に機能しています。

私の質問は、たとえば malloc を直接使用した他のファイルに何が起こるかです

私のマクロがヘッダーファイルにないため、この malloc 呼び出しが get をどのように解釈するか。

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

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 を使用しようとしましたが、次のメッセージが表示されます。