問題タブ [memory-footprint]
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++ - メモリ フットプリントのプロファイリング
C/C++ で書かれたプログラムがあり、データ (ヒープ、スタック) に使用されたメモリの量と、コード (ライブラリ、実行可能ファイルなど) に使用されたメモリの量を知りたいとします。
「valgrind」を使用して使用される動的メモリ空間を測定したことがありますが、データとコードのメモリ フットプリントをプロファイルする機能があるとは思いません。
プラットフォーム : Mac (おそらく Linux)
c# - C#アプリケーションでのメモリリークの検出
私はC#、フレームワーク4のアプリケーションを持っています。非常に基本的に、このアプリケーションは主にイベントに反応してオブジェクトを作成し、それらを解放し、データベース接続を作成して閉じます。
今、私たちはアプリケーションのプロセスが時々非常に奇妙な方法で成長するのを見てきました。2つの異なる動作があります:
- アプリケーションは、RAMが最大4 GBに達するまで成長しますが、通常は約500MBにとどまる必要があります。結果->クラッシュします!
- アプリケーションは1200MB(30分)までゆっくりと成長し、その後500 MB(1秒)まで急激に縮小します...そしてこのプロセスは時々繰り返されます。これは実際のガベージコレクターになることができますか?
ここで、アプリケーションに関する詳細情報を提供するために、ログファイルにアプリケーションのプロセスのサイズを追加したいと思います。ネイティブフレームワークを介して可能ですか?C#でオブジェクトのサイズを知ることは可能ですか?
NetMemoryProfiler4アプリケーションも見つけましたが、可能であれば埋め込みロギングを使用したいと思います。
windows-8 - Windows8ストアアプリ-メモリフットプリントが高すぎます
WinJS Windows 8ストアアプリを構築していますが、現在「HTML5アプリのパフォーマンスアナライザー」に失敗するため、「メモリーフットプリント」を低く保つことに問題があります。
メモリーフットプリント
少量のメモリを使用すると、アプリの動作が向上します。アプリのメモリフットプリントは60MB未満である必要があります。アプリのメモリフットプリントを削減するには、画像やBLOBなどの不要になったオブジェクトへの参照を保持しないようにします。
結果:アプリリファレンスセットは112MBです。ワーキングセットは98MBです。これは、80MBのリファレンスセットの最大値と80MBのワーキングセットの最大障害しきい値を超えています。
これに対処するためのヒントを探していますが、この112MBがどこから来ているのかわかりません。タスクマネージャーを見ると、アプリが50MBを超えることはありません。
ありがとう!
これ以上の情報が必要な場合は、何を提供すればよいかわからない場合は、質問してください。
c# - Dictionary とは異なるオプション
私が作ったプログラムの核心は、キーボード フックです。特定のボタンを押すと、特定のアクションが実行されます。Combobox を使用して選択できるオプションのリストがかなり大きいため、ECCMDS (組み込みコントローラー コマンドの略) と呼ばれる辞書を作成することにしました。次に、Combobox アイテムを ECCMDS.Keys に設定し、コマンドで名前を選択します。XMLファイルに保存するだけの文字列であるため、保存も簡単です。プログラムは 4 ~ 8 個のボタンを監視します。問題は実行時に発生します。このプログラムは約 53 MB のメモリを使用します (もちろん、今調べてみると 16 MB と表示されています :/) これが実行されているタブレットには 3Gb のメモリと Atom プロセッサが搭載されています。通常、私は53メガを嘲笑しますが、
そのため、ディクショナリは RunCommand メソッドの複雑さを大幅に軽減しますが、メモリの使用量について疑問に思っています。このタブレットは、アイドル状態でメモリの 80% を使用しているため、これにできるだけ影響を与えないようにしたいと考えています。この問題の別の解決策はありますか? ここに辞書の小さな例があります
これを達成するためにリフレクションなどを使用することは可能ですか?
編集
したがって、新しいプログラムを作成して 2 つの方法を比較するという素晴らしい提案の後、それは私の辞書ではないと判断しました。私は、WPF が Winforms 間の大きな違いだとは思いませんでしたが、違いはあるに違いありません。新しいプログラムにはほとんど画像がありません (以前のように、私のグラフィックスのほとんどは現在生成されています) が、結果は次のとおりです。
java - できるだけ少ないメモリを使用しながら、オブジェクトをすばやく見つける必要があります。どのデータ コンテナーを使用すればよいですか?
私のプログラムは、何百万ものレコードをデータ コンテナーに挿入する必要があります。hashmapと treemapを試しました。JVMが2GBのRAMを使用できるようにしていますが、両方ともヒープスペースの例外が発生します。
私のプログラムはコンテナから特定のデータを頻繁に取得しますが、 O(logn) 時間がかかる場合は許容できると思います。では、どのコンテナを使用すればよいでしょうか。または、実装する必要がありますか?どのように?
詳細:キーは、グローバル ID のような文字列です。たとえば、"00011123459" などです。次に、キーはリストのリストにマップされますList<List<String>>
。私のプログラムはファイルからreadLineを読み、次に行をリストに変更し、リストからグローバルIDを取得し、リストを対応するリストのリストに入れます。ファイルには数百万行以上の行が含まれているため、リストを作成しすぎたことが主な理由だと思います。ただし、マシンにメモリを追加することはできません。
list - マネージ メモリ C#
VS2013 を実行して、アプリケーションのダンプを分析し、メモリ内の大きなオブジェクトを探しています。これまでのところ、どのオブジェクトがメモリを使用しているかを特定できました。
ここで 1 つの質問ですが、画像の ushort データを格納するリスト オブジェクト (List) の 1 つが表示され、その下に実際の Uint16 オブジェクトがほぼ同じサイズで表示されます。
スクリーンショットを見て...
それは私のオブジェクトが「二重メモリ」を使用することを意味しますか??
java - Java のリフレクションはそのメモリ フットプリントにどのように影響しますか?
Java プログラムが C++ プログラムよりも多くのメモリを使用することは、確立された事実のようです。StackExchange の回答によると、これはガベージ コレクションの性質と Java の「バイナリ」のバイトコードの性質によるものです。しかし、この場合、リフレクションはどのような役割を果たしているのでしょうか?
Java では、実行時に提供されるプレーン テキストとして、クラスの変数とメソッドを列挙して呼び出すことができます。これを可能にするために、これらの文字列キーをそれぞれの属性にリンクする何らかの種類のメタデータが保存されています。
このメタデータはヒープに保存されていますか?もしそうなら、リフレクションを必要としないクラスに対してそれを無効にする方法はありますか? (昔のデータ)