問題タブ [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.
c++ - tcmalloc: 静的にコンパイルするときに、malloc 呼び出しをオーバーライドするにはどうすればよいですか?
を使用するLD_PRELOAD=/usr/local/lib/libtcmalloc.so
と、malloc へのすべての呼び出しが tcmalloc 呼び出しになります。ただし、libtcmalloc に対して静的にリンクすると、LD_PRELOAD
設定をまだ使用しない限り、そのまま malloc が呼び出されることがわかります。
では、malloc が tcmalloc にフックされるように、tcmalloc に対して静的にコンパイルするにはどうすればよいでしょうか?
ノート:
- 私はC++の新しいものなどをたくさん使っているので、mallocをtcmallocに定義するだけではうまくいきません
- おそらく私は自分で malloc_hook を使用する必要がありますが、動的にリンクするときに明らかにそれを行っているため、tcmalloc にそれを実行させることができると考えていました。
linux - Google の malloc をグローバルに使用しますか?
Linux で Google の tcmalloc を試してみたいと思っています... ここに巨大なプロジェクトがあり、qmake によって生成された何百もの Makefile があります... gcc を tcmalloc に対してグローバルにリンクさせる方法を見つけたいと思います (そうするように) libcで)...これは可能ですか?それとも、すべての Makefile を編集する必要がありますか?
(何百ものファイルがあるため、すべての pro ファイルを編集するのは避けたいと思います)
(また、すでに LD_PRELOAD メソッドを試しましたが、うまくいきません)...
free - malloc の実装は解放されたメモリをシステムに返しますか?
メモリの割り当てと割り当て解除が頻繁に行われる、寿命の長いアプリケーションがあります。malloc
解放されたメモリをシステムに返す実装はありますか?
この点で、次の動作は何ですか。
- ptmalloc 1、2 (glibc のデフォルト) または 3
- dlmalloc
- tcmalloc (Google スレッドの malloc)
- solaris 10-11 のデフォルトの malloc および mtmalloc
- FreeBSD 8 デフォルトの malloc (jemalloc)
- 買いだめマロック?
アップデート
malloc
日中と夜間でメモリ消費量が大きく異なるアプリケーションがある場合 (例)、解放されたメモリをシステムに戻すよう強制できますか?
そのような戻りがなければ、解放されたメモリは何度もスワップアウトされますが、そのようなメモリにはゴミしか含まれていません。
python - Linux上のpython cherrypyアプリケーションによってメモリが解放されない
データベースから10万行をフェッチしてWebページを生成し、すべての小さなオブジェクト(リスト、タプル、辞書)を解放する長時間実行プロセスがあります。Windows では、各要求の後にメモリが解放されます。ただし、Linux ではサーバーのメモリが増え続けます。
次の投稿では、問題の内容と考えられる解決策の 1 つについて説明しています。
http://pushingtheweb.com/2010/06/python-and-tcmalloc/
tcmalloc を使用する独自の Python バージョンをコンパイルせずに、この問題を回避する他の方法はありますか。Python はシステム管理者によって制御されているため、このオプションを実行するのは非常に困難です。
c++ - 静的リンクによる Windows tcmalloc の置き換え
C++ プロジェクトでメモリの断片化の問題が発生し、次のことを試みました。
nedmalloc - ストレス テストに合格しませんでした (15 時間後にクラッシュしました)。つまり、ほとんどの場合は機能しますが、すべてではありません。また、他のアロケータよりもメモリ使用量が多くなります。
jemalloc- Windows の準備ができていませんか?
tcmalloc - 静的リンクを使用してホスト コードでコンパイルされますが、CRT シンボルと競合します。tc_malloc(...) のようなエイリアスを使用して、割り当て用の独自のラッパーを作成できますか? どうやってするか?
コメントはありますか?前もって感謝します。
c - glibでtcmallocを使用する
Googleのtcmallocを使用して得られるパフォーマンスの向上をテストしたいと思います。私のプログラムは、glibが提供する非常に多くのユーティリティ(ハッシュ、リスト、配列など)を使用して構築されています。だから私が欲しいのは基本的にglibがglibcのmallocの代わりにtcmallocを使うようにすることです。
この問題には、次の2つのアプローチで対処できます。
- オプションを指定してglibをコンパイルし
-tcmalloc
ます。 - glibのメモリ割り当て関数
g_mem_set_vtable ()
から使用する。
私は実際には2番目のものを好みますが、それを実装するための例は見つかりませんでした。
ヒントはありますか?これを行うためのアイデアはありますか?
ios - ptmalloc、tcmalloc、dmalloc、HOARD、または nedmalloc? (iOS および Android ゲーム)
私は、多くの小さな割り当てから iPad で少しメモリを消費するゲームを持っています。C++ で記述されたカスタム ゲーム エンジンがあります。iOS でこれらの他のアロケーターの 1 つを正常にコンパイルした人はいますか? 落とし穴はありましたか?私の試みがどうなるかを人々に知らせます。
c++ - STL の TCMalloc アロケーター
STL コンテナーで TCMalloc を使用したいので、TCMalloc で構築されたアロケーターが必要です (TBB malloc での tbb_allocator など)。TCMalloc のドキュメントが見つかりません(ドキュメントと呼ばれる場合)。そこで、ヘッダー ファイルの調査を開始し、 というクラスを見つけましたSTL_Allocator
。しかし、何かがはっきりしません。stl_allocator.h からの引用:
STL_Allocator テンプレート クラスの定義は次のとおりです。
Alloc
その議論が何であるかはわかりません。一部のメモリ割り当て関数のラッパー クラスを作成する必要がありますか? TCMallocを使った人はいますか?
python - Pythonクラスとnumpyを使用しているときにメモリが解放されることはありません
基本的に、ここにすべてのコードを投稿するつもりはありませんが、一般的な例を提供します。実行して値の大きな配列を作成する関数を持つクラスがあります。この配列は、私の見積もりから10MBをはるかに大きくするべきではありません。関数内では、列車の実行内の関数の後に収集する必要がある配列を新しく作成し、変更します。それらは、大きな配列に入れられる返されたtempArray以外の場所では使用されません。これが繰り返されます。使用されるメモリはどんどん増えていきます。私のコードまたはこれを回避する方法に問題がありますか?Linuxでのmallocのメモリリークについてここで読んだことがあります:http: //pushingtheweb.com/2010/06/python-and-tcmalloc/。
c - 「TCMalloc は現在、システムにメモリを返しません。」とはどういう意味ですか?
http://goog-perftools.sourceforge.net/doc/tcmalloc.html _ 「CMalloc は現在、システムにメモリを返しません。」42 MB を割り当てて解放すると、システムはそれを取り戻せませんが、次に 47 MB を割り当てると、さらに 5 MB しか盗まれないということでしょうか? 私の質問は、ロードされた dll または .so モジュールで何が起こるかです。プログラムが終了するまで解放されない独自のメモリチャンクを取得しますか。実行時に更新可能な sw を書きたい場合は、プログラムを終了せずに新しい dll をロードする必要があるためです。だから私の質問は次のとおりです: -ltcmalloc を使用し、メモリを割り当てて解放する dll を常にロードおよびアンロードしていると、メモリの使用量が爆発的に増加しますか? ばかげた質問だと思いますが、各dllが独自のメモリ割り当てを使用するのか、メモリ割り当てがプロセスレベルごとに行われるのかはわかりません。