問題タブ [out-of-memory]

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 投票する
6 に答える
3715 参照

c# - 断片化を防ぐために大きなオブジェクト ヒープを使用した直後に GC.Collect を呼び出す必要があります

私のアプリケーションは、大量のバイナリ シリアライゼーションと大きなオブジェクトの圧縮を行います。非圧縮のシリアル化されたデータセットは約 14 MB です。圧縮すると約 1.5 MB になります。データセットで serialize メソッドを呼び出すたびに、大きなオブジェクト ヒープのパフォーマンス カウンターが 1 MB 未満から約 90 MB に跳ね上がることがわかりました。また、比較的負荷の高いシステムでは、通常、このシリアライゼーション プロセスが数回発生するしばらく (数日) 実行した後、このシリアライゼーション メソッドが呼び出されると、アプリケーションがメモリ不足の例外をスローすることが知られています。メモリは十分にあるようです。断片化が問題であると推測しています (100% 確信しているとは言えませんが、ほぼ確実です)。

私が考えることができる最も簡単な短期的な修正(短期と長期の両方の答えを探していると思います)は、シリアル化プロセスが完了した直後に GC.Collect を呼び出すことです。私の意見では、これはLOHからオブジェクトをガベージコレクションし、他のオブジェクトを追加する前に行う可能性があります。これにより、断片化をあまり引き起こすことなく、他のオブジェクトがヒープ内の残りのオブジェクトにぴったりと収まるようになります。

このばかげた 90MB の割り当て以外に、失われた LOH を使用するものは他にないと思います。この 90 MB の割り当ても比較的まれです (約 4 時間ごと)。もちろん、そこにはまだ 1.5 MB の配列があり、おそらく他のいくつかの小さなシリアル化されたオブジェクトがあります。

何か案は?

良い反応の結果として更新

これが仕事をする私のコードです。私は実際にこれを変更して、シリアル化中に圧縮して、シリアル化が同時にストリームにシリアル化されるようにしましたが、あまり良い結果は得られませんでした。また、メモリ ストリームを 100 MB に事前割り当てし、同じストリームを 2 回続けて使用しようとしましたが、とにかく LOH は最大 180 MB になりました。Process Explorer を使用して監視しています。それは非常識です。次に UnmanagedMemoryStream のアイデアを試してみようと思います。

そうでない場合は、試してみることをお勧めします。この正確なコードである必要はありません。大規模なデータセットをシリアル化するだけで、驚くべき結果が得られます (私のものには、約 15 のテーブルがあり、文字列と列がたくさんあります)。

UnmanagedMemoryStream でバイナリ シリアル化を試行した後に更新する

UnmanagedMemoryStream にシリアル化しても、LOH は同じサイズにジャンプします。私が何をしても、BinaryFormatter を呼び出してこの大きなオブジェクトをシリアル化すると、LOH が使用されるようです。事前割り当てに関しては、あまり役に立たないようです。100MBを事前に割り当ててからシリアライズすると、170MBが使用されます。これがそのコードです。上記のコードよりもさらに簡単

真ん中の GC.Collect() は、LOH パフォーマンス カウンターを更新するためだけのものです。正しい 100 MB が割り当てられることがわかります。しかし、シリアライズを呼び出すと、すでに割り当てられている 100 の上にそれが追加されているように見えることに気付くでしょう。

0 投票する
4 に答える
1602 参照

hibernate - 2M レコードの Hibernate で Criteria.scroll() を使用した Postgresql OutOfMemory

2M レコードを含む DB の PostgreSQL で Criteria.scroll() を実行しています。メモリが増え続け、最終的に OutOfMemoryException が生成されます。これを修正する方法についてアドバイスをお願いします。

Postgresql DB バージョン: 8.4 使用する Postgresql ドライバー: postgresql-8.4-701.jdbc4.jar

PostgreSQL の Hibernate scroll() に関する既知の問題はありますか?

ガイダンス/提案に感謝します。

0 投票する
4 に答える
9364 参照

.net - WPFのwin32ウィンドウ

最近、アプリケーションで奇妙な問題が発生しました。

アプリケーションのWPFウィンドウにwin32ウィンドウがあり、WPFウィンドウのサイズを変更すると、問題が発生しました。

スタックトレース:

また、私はいくつかの関連リンクを見つけました:

relatedA

relatedB

  1. この問題を回避または処理する方法はありますか?

  2. 本当の問題を見つける方法は?

  3. コールスタックから、問題の原因が.NET Frameworkであると判断できますか?

回答やコメントありがとうございます!

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

linux - 「OOMキラー」の次に「リザレクター」はありますか?

Linux には「OOM Killer」と呼ばれるカーネル機能があることを理解しています。OOM (Out-Of-Memory)状態が治まると、「プロセス復活」のようなものはありますか?

いろいろな理由でこの機能を実装するのは難しいと思いますが、それに近いものはありますか?

編集:例:「復活者」には、限られた一連のプロセス情報(コマンドライン、環境など)を保存するためのメモリブロックが保証されます(つまり、プロセスコードとデータ全体ではありません!)。OOM 状態がクリアされると、「復活者」はリストを調べて、一部のプロセスを「復活」させることができます。

私が今まで集めたものから、私が求めているものに似た機能はないようです。

0 投票する
13 に答える
115656 参照

android - java.lang.OutOfMemoryError: ビットマップ サイズが VM の予算を超えています - Android

Androidで画像を多用するアプリを開発しました。

アプリが 1 回実行され、画面に情報が入力され ( LayoutsListviewsTextviewsImageViewsなど)、ユーザーが情報を読み取ります。

アニメーションも、特殊効果も、記憶を埋め尽くすものもありません。場合によっては、ドローアブルが変更されることがあります。一部は Android リソースであり、一部は SDCARD 内のフォルダーに保存されたファイルです。

次に、ユーザーが終了し (onDestroyメソッドが実行され、VM によってアプリがメモリに残ります)、ある時点でユーザーが再び入力します。

ユーザーがアプリに入るたびに、ユーザーがjava.lang.OutOfMemoryError.

では、多くの画像を処理するための最良/正しい方法は何ですか?

常にロードされないように、それらを静的メソッドに配置する必要がありますか? レイアウトまたはレイアウトで使用されている画像を特別な方法できれいにする必要がありますか?

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

android - BitmapFactory OOM が私を夢中にさせる

私は多くの検索を行ってきましたが、他の多くの人が同じ OOM メモリの問題を経験していることを知っていBitmapFactoryます。私のアプリは、使用可能な合計メモリが 4MB しか表示されませんRuntime.getRuntime ().totalMemory()。制限が 16MB の場合、ビットマップ用のスペースを確保するために総メモリが増加しないのはなぜですか? 代わりに、エラーがスローされます。

また、1.6MB の空きメモリがある場合、Runtime.getRuntime().freeMemory()「VM は 614400 バイトを割り当てることができません」というエラーが表示されるのはなぜですか? 私には十分な利用可能なメモリがあるようです。

この問題を除いて、私のアプリは完成しています。この問題は電話を再起動すると解消され、私のアプリだけが実行されます。デバイスのテスト (Android 1.5) に HTC Hero を使用しています。

この時点で、これを回避する唯一の方法は、何とか使用を避けることだと考えていBitmapFactoryます。

1.6MB の空きメモリがあるときに VM が 614KB を割り当てない理由について、これについてのアイデアや説明はありますか?

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

java - Apache FOP のビルド時にシステムのリソースが不足しています

コマンド ラインで ant を使用して Apache FOP をビルドしようとすると、次のようにエラーが表示されます。

理解できない。十分な RAM がありますが、システムのリソースが不足する可能性はありますか?

0 投票する
3 に答える
7649 参照

java - main java.lang.OutOfMemoryError: Java ヒープ領域

私のコードは次のようなことをしています:

つまり、各反復で for ループ内に新しい変数を作成しています。

これがメモリ不足の問題の原因でしょうか?

Netbeans によって報告されたエラー:

Upate これは Java コンソール アプリケーションであり、アプリ全体は基本的に in forloop で実行されます。

0 投票する
3 に答える
513 参照

memory-management - CF の OutOfMemoryExceptions を解決するためのアドバイス

私の CF アプリケーションには、UI 要素として多くの画像を使用して、非常にカスタマイズされた UI があります。これらのビットマップがメモリに保持されると、UI がよりスムーズに感じられます。オンデマンドで読み込まれると、UI が遅くなり、ボタンが 1 つずつ表示されるのがわかります。長い間、これはかなりうまくいきましたが、最近、アプリケーションが取得できるすべてのメモリ (32MB iirc) をほとんど使用していることに気付きました。次に、リモート パフォーマンス モニターを使用して、クリアなメモリ ホグを見つけられるかどうかを確認しました。

結局のところ、RPM を使用して GC ヒープの有用なスナップショットを取得するのは困難です。メモリ不足の例外を受け取る前に閉じてください。スナップショットを要求すると、ネイティブの例外が即座にスローされます。ただし、たまにGCスナップショットを見つけることができます。ここに 1 つ保存しました: http://files.zzattack.org/misc/ramis.gclogとここにスクリーンショット: http://files.zzattack.org/images/ramisgcsnapshot.png 私にはそれほど面倒ではないように見えます。最大のオブジェクトは、リソース ファイル (PNG 画像で約 3MB) を含むバイト配列です。全体で 3643304b (約 3.5MB) のメモリを使用しています。これらの画像は、約 20 の異なる形式で UI 要素に広がっています。個別のスレッドがメモリ使用量にどのような影響を与えるかはわかりませんが、約 5 ~ 6 個のスレッドが同時に実行されており、そのうち少なくとも 4 個が 95% の確率でブロックされた状態になっています。

プログラムで、2MB の gzip ファイルをダウンロードしようとすると、常に OutOfMemoryException が発生します。GC.GetTotalMemory(false) を呼び出すと、実際に現在使用可能な容量よりも多くを割り当てようとしていることがわかります。GC.Collect を呼び出して再試行しても、問題は「解決」/延期されません。

私の問題に対処する方法についてアドバイスをお願いします。ビットマップをメモリに保存したいのは確かですが、ビットマップに使用できるスロットの量を制限して、最も頻繁に必要とされるものだけをメモリに保持し、必要に応じて他のものをロードすることもできます。これはおそらくロングショットですが、OS にもっと多くのメモリを予約するように要求することはできますか? とにかく十分なRAMが利用可能なデバイスでのみアプリケーションが実行されることは確かです. 事前に感謝します。

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

maven-2 - Maven Cobertura OutOfMemoryError

Cobertura コードカバレッジを生成するために Maven site:run を使用しています...

以下は、cobertura の pom.xml 構成です。

ただし、site:run の最後に OutOfMemoryError が表示されます。このエラーを取り除く方法を提案してください。(これらの -Xmx、-XX オプションはすべて試しました...)