問題タブ [memory-consumption]
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.
java - 単純な Java プログラムがますますメモリを消費する
単一の JFrame インスタンスを作成して表示するこの単純な Java コードがあります。このリンクには、jconsole によって取得されたメモリ消費グラフのスクリーンショットが含まれています
私が心配しているのは、タスク マネージャーの java.exe で、メモリ使用量が 8 ~ 9 秒ごとに 4 ~ 5 kbs の割合で継続的に増加していることです。助けが必要
c++ - 値渡しパラメータ Vs のメモリ消費量。参照渡し
重複の可能性:
参照渡しと値渡しの違いは何ですか?
タイトルが他の多くの回答済みの質問を表している可能性があることは知っていますが、私の非常に具体的な質問は他のスレッドでは回答されていないと思います (検索しましたが、重複していれば申し訳ありません)。
ビジネスへ: 次の署名を検討してください:
A:
B:
そして次の使用法:
私の質問は、MyFunction のメモリ スタック フレーム内のパラメータのメモリ消費に関するものです。
A の場合、パラメータは値で渡されますが、sizeof(short int) バイトを消費するということですか?
B の場合、コンパイラがポインタを使用してパラメータを実装すると仮定すると、パラメータは参照によって渡されますが、それは sizeof( pointer_type ) バイトを消費することを意味しますか?これはおそらく short int よりも大きいですか? (参照を使用する場合、プラットフォームによってはとにかく64ビットを消費する可能性があると言われました)
どちらの場合も効果があるかどうかを知りたいので、関数は long int 型を受け取ることに注意してください。
もう 1 つの小さな質問 - ポインターを使用して参照渡しパラメーターをコンパイラーが実装しない例を誰でも投稿できますか?
ありがとう、アサフ。
c# - リフレクションを使用して、どのフィールドがプロパティのバッキング フィールドであるかを判断する
リフレクションを使用してオブジェクトをマッピングしています。これらのオブジェクトはマネージ コードにありますが、リフレクション以外ではソース コードや基になる構造などを確認することはできません。これらすべての包括的な目標は、オブジェクトの基本的なメモリ マップです (SOS.dllDumpObject
および!ObjSize
コマンドと同様の機能)。そのため、フィールドとプロパティの両方として「二重にカウント」されているメンバーを特定しようとしています。
例えば:
マッピングされた場合:
- 田畑
- 日
- k__BackingField
- プロパティ
- 日にち
このようなクラスとして:
マッピングされた場合:
- 田畑
- 日
- 日にち
- プロパティ
- 日にち
一見すると、Date
プロパティの「バッキング フィールド」が という名前のフィールドであることはわかりませんdate
。このシナリオでは、日付を 2 回カウントしないようにしています。
さらに混乱/複雑なのは、メソッドを介してリストされる対応するフィールドが常にプロパティにあるとは限らないシナリオに遭遇したType.GetFields()
ため、すべてのプロパティを完全に無視することはできません。
から返されたコレクション内のフィールドが、Type.GetFields()
本質的に から返された対応するプロパティのバッキング フィールドであるかどうかを判断する方法についてのアイデアはありType.GetProperties()
ますか?
編集 - から返されたコレクションにリストされている対応するフィールドがプロパティにない条件を判断するのに苦労しましたType.GetFields()
。そのような条件に精通している人はいますか?
編集 2 - プロパティのバッキング フィールドが から返されるコレクションに含まれない場合の良い例を見つけましたType.GetFields()
。String のフードの下を見ると、次のようになります。
- オブジェクトには、FirstChar という名前のプロパティが含まれています
- オブジェクトには Chars という名前のプロパティが含まれています
- オブジェクトには、Length という名前のプロパティが含まれています
- オブジェクトには、m_stringLength という名前のフィールドが含まれています
- オブジェクトには、m_firstChar という名前のフィールドが含まれています
- オブジェクトには、Empty という名前のフィールドが含まれています
- オブジェクトには、TrimHead という名前のフィールドが含まれています
- オブジェクトには TrimTail という名前のフィールドが含まれています
- オブジェクトには、TrimBoth という名前のフィールドが含まれています
- オブジェクトには charPtrAlignConst という名前のフィールドが含まれています
- オブジェクトには、alignConst という名前のフィールドが含まれています
m_firstChar
とはプロパティのm_stringLength
バッキング フィールドですが、文字列の実際の内容は Chars プロパティに保持されますFirstChar
。Length
これは、文字列内のすべての文字を返すようにインデックス付けできるインデックス付きプロパティですが、文字列の文字を保持する対応するフィールドが見つかりません。その理由について何か考えはありますか?または、インデックス付きプロパティのバッキング フィールドを取得する方法は?
memory-management - メモリ消費管理に行く
私は Go が初めてで、メモリ消費をどのように管理するかを理解しようとしています。
テスト プロジェクトの 1 つでメモリに問題があります。私のプログラムが長時間実行されると、なぜ Go がますます多くのメモリを使用するのか (メモリを解放しないのか) がわかりません。
以下に示すテストケースを実行しています。最初の割り当ての後、プログラムは約 350 MB のメモリを使用します (ActivityMonitor によると)。次に、それを解放しようとすると、ActivityMonitor はメモリ消費量が 2 倍になることを示しています。なんで?
Go 1.0.3 を使用して OS X でこのコードを実行しています。
このコードの何が問題になっていますか? また、Go プログラムで大きな変数を管理する正しい方法は何ですか?
多くの時間とメモリを使用するアルゴリズムを実装するときに、別のメモリ管理関連の問題が発生しました。しばらく実行すると、「メモリ不足」の例外がスローされます。
c - SQLite のメモリ消費を減らすには?
アプリケーションで SQLite3 によるメモリ消費を削減する方法を探しています。
実行のたびに、次のスキーマを持つテーブルが作成されます。
その後、データベースは 1 秒あたり 5 万回の操作でいっぱいになります。書き込みのみ。
アイテムが既に存在する場合は、更新クエリを使用して「カウント」を更新します(これはUPSERTと呼ばれると思います)。これらは私のクエリです:
このように、トランザクションごとに 500 万回の操作で、DB に非常に高速に書き込むことができます。
この問題のためにディスク容量はあまり気にしませんが、RAM 容量が非常に限られています。したがって、あまり多くのメモリを浪費することはできません。
sqlite3_user_memory() は、実行中にメモリ消費量がほぼ 3GB に増加したことを通知します。sqlite3_soft_heap_limit64() で 2GB に制限すると、2GB に達するとデータベース操作のパフォーマンスがほぼゼロになります。
望ましいパフォーマンスを達成するには、キャッシュ サイズを 1M (ページ サイズがデフォルト) に上げる必要がありました。
メモリ消費を減らすにはどうすればよいですか?
android - AndroidがPNGを解凍すると、メモリ不足エラーが発生する可能性があります
アプリケーションのアクティビティの背景にいくつかのpng画像を使用しています。これらのpngファイルは、ほとんどが非常に小さいサイズの画像です。たとえば、私は768x1024のサイズのものを使用していますが、これは実際にはディスク上で29.6KBです。私がSamsungNote1でアプリケーションを実行したとき、私は画像が実際に約を消費することに気づきました。3MBのメモリ。そのため、AndroidはPNGファイルを完全なARGBビットマップ(768x1024x4バイト)に解凍しているようです。これは、Androidが画像をリサンプリング/サイズ変更し、PNGファイルをdrawable-nodpiフォルダーに配置した結果である可能性があると思いましたが、これにより同じ量のメモリが消費されました。
それで、この場合、私は何をすべきですか、私はこの減圧動作をどうにかして防ぐことができますか?このプロジェクトでは、さまざまなアクティビティにさまざまな画像を配置する必要があるため、ある時点でメモリ不足エラーが発生するようです。私はAndroidの初心者ですが、システムが画像リソースをどのように処理するか正確にはわからないため、ここで何かを見逃す可能性があります。
performance - レイヤーの削除および追加時の KineticJS の大量のメモリ消費
複数のユーザー (最大 20) の動きを再生したいアプリケーションを構築しています。各ユーザーは、X、Y 位置 (20 から 400 の範囲) のリストを持っています。リプレイの範囲は 1 ~ 10 分です。
リプレイは 8 FPS で描画されますが、これで十分です。各フレームで、ユーザーの動きを示すレイヤーを削除し、次の時点まですべてを再描画します。
このアプリケーションは大量のメモリを使用します。リプレイを再実行すると、メモリ消費量が増加し続けます (最大 8 GB)。Google Chrome (バージョン 27) でプロファイラーを使用してみましたが、常にremove()
古いレイヤーを使用しているにもかかわらず、メモリ内にレイヤーが蓄積されているようです。
次のコードは、アプリケーションの動作の簡単なモックアップを示しています。
私の質問は、stage.removeChildren()
またKinetic.Layer().remove()
、メモリからレイヤーを削除しないのですか? それとも、これをまったく別の方法で処理する必要がありますか?
php - foreachサイクルでメモリ消費量がどんどん大きくなるのはなぜですか?
CLI を使用して処理している大量のデータがあります。
スクリプトでは、データは foreach サイクルを通過します。
しかし、繰り返しのたびに、メモリ消費量はますます大きくなっています。
なぜこうなった?すべての var がループ内で再割り当てされるため、メモリ リークがあってはなりません。すべての反復の最後に var null を設定しようとしましたが、役に立ちませんでした。
ループでは、オブジェクト (ActiveRecord) を使用し、DB を操作します。
最初はスクリプトは非常に高速に動作し (1 秒あたり約 10 回の反復)、最終的にはそのパフォーマンスは 1 秒あたり 1 回未満の反復になります。
ありがとう。