問題タブ [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.
visual-studio - Vista、Visual Studio、およびOutOfMemoryExceptions
OutOfMemoryExceptionsが発生するため、VSがビルドされないという問題が少しあります。2 GIG RAMを搭載したVistaボックスは、起動時に約1 GIGのRAMを使用しており、何もしていません(職場のネットワークドライブに接続するだけです)。
次に、Visual Studioを実行すると、数回のビルド後にdevenv.exeのピークが約730 MBになり、エラーが発生します。ほとんどの場合、修正するには再起動が必要です。
Aeroを無効にし、MSCONFIGで不要なサービスとアプリケーションを停止しました。Vistaでメモリを使用し、肥大化していないことがあることは知っていますが、起動した直後にメモリの半分を使用するのは少し過剰に思えます(いくつかの開発マシンでも同じです)。
アプリケーションはどのような種類のピークメモリを生成しており、この問題を解消するために何ができますか?
c# - 配列のガベージ コレクションを強制する、C#
いくつかの 3 次元配列が大量のメモリを割り当て、プログラムがそれらを大きい/小さい配列に置き換える必要があり、OutOfMemoryException をスローするという問題があります。
例: 5 つの 96MB 配列 (200x200x200、各エントリに 12 バイトのデータ) が割り当てられており、プログラムはそれらを 210x210x210 (111MB) に置き換える必要があります。これは次のような方法で行います。
array1-array5 は、以前に使用したフィールドと同じです。これは古い配列をガベージ コレクションの候補として設定する必要がありますが、GC は十分に迅速に動作せず、新しい配列を割り当てる前に古い配列を割り当てたままにします - これが OOM を引き起こします - 一方、新しい割り当ての前にそれらが解放された場合、スペースは足りる。
私が探しているのは、次のようなことを行う方法です。
そのコードは(状況によっては)かなり頻繁に実行する必要がある可能性があるため、完全なガベージコレクションが良いアイデアかどうかはわかりません。
これを行う適切な方法はありますか?
java - Netbeans メモリ管理
しばらく実行した後にメモリ不足の例外をスローする Java コードがあります。私は netbeans プロファイラーを調査しましたが、ある特定の操作を行うと、Surviving Generations Metric が上昇します。ただし、プログラムのステータスをリセットしても (kill ではありません)、Surviving Generations Metric は減少しません。
生き残った世代の指標が減らないのはなぜですか?
java - 巨大なテーブルからすべてのレコードを取得するときにOOM(メモリ不足)エラーを回避するにはどうすればよいですか?
巨大なテーブルをカスタムXMLファイルに変換するタスクが与えられました。この仕事にはJavaを使用します。
単に「SELECT*FROM customer」を発行すると、大量のデータが返され、最終的にOOMが発生する可能性があります。レコードが利用可能になったらすぐに処理し、その後SQL取得プロセス中にメモリからレコードを削除する方法はありますか?
---2009年7月13日に編集
私の質問を詳しく説明させてください。1つのdbサーバーと1つのアプリケーションサーバーがあります。アプリケーションでselectクエリを発行すると、データはデータベースサーバーからアプリサーバーに移動します。
ResultSetは、クエリ内のすべてのレコードを受信するまで待機する必要があると思います(間違っている場合は修正してください)。フェッチサイズを4に設定しても、1000レコードのテーブルの場合、アプリサーバーのヒープメモリに1000レコードが残ってしまいますが、正しいですか?フェッチサイズは、dbサーバーとの間のラウンドトリップの数にのみ影響します。
私の質問は、アプリサーバーに到着した直後にその4つ(または任意の数)のレコードの処理を開始し、アプリサーバーのメモリを解放するためにそれを破棄する方法です。
c# - 32 ビット .NET プロセスで 1,000 MB を超えるメモリを割り当てる
32 ビットの .NET プロセスで 1,000 MB を超えるメモリを割り当てられないのはなぜでしょうか。次のミニ アプリケーションは、1,000 MB を割り当てた後に OutOfMemoryException をスローします。なぜ 1.8 GB ではなく 1,000 MB なのですか? 変更できるプロセス全体の設定はありますか?
PS: ガベージ コレクションは役に立ちません。
編集して、私が望むものを明確にします。データベース/ディスクに書き込む前に非常に大量のデータを処理するサーバーアプリケーションを作成しました。すべての一時ファイルを作成する代わりに、メモリ内キャッシュを作成しました。これにより、全体が超高速になります。しかし、メモリには限りがあるので、その限界を調べてみました。そして、なぜ私の小さなテスト プログラムが正確に 1,000 MB の後に OutOfMemoryException をスローしたのか疑問に思いました。
java - Java Web Crawler で複数のスレッドの OUT OF MEMORY エラーを処理する方法
私はプログラミングにかなり慣れていないので、Web クローラーに関する論文に取り組んでいます。私は Web クローラーによって提供されましたが、シングル スレッドであるため速度が遅すぎることがわかりました。1000 の Web ページをクロールするのに 30 分かかりました。実行用に複数のスレッドを作成しようとしましたが、20 のスレッドで同時に 1000 の Web ページを実行するのに 2 分しかかかりませんでした。しかし、今、「Heap Out of Memory」エラーが発生しています。私がしたことは間違っていたと確信しています.20スレッドのforループを作成していました。エラーを出さずにJavaクローラーをマルチスレッド化する正しい方法は何ですか? そして、それについて言えば、マルチスレッドは私の問題の解決策ですか?
out-of-memory - SandCastleとOutOfMemoryException
SandCastleは、XSL変換中にOutOfMemoryException例外でクラッシュするため、クラスライブラリを処理できません。
明らかなことを除いて、より多くのメモリを購入することを除いて、私たちはそれについて何ができますか?問題は、これが32ビットOS上に3.3GBのメモリを搭載した開発者のマシンであるため、基本的に64ビット以上のメモリにアップグレードするか(しばらくは発生しません)、仮想サーバーを次のようにセットアップする必要があることです。大量のメモリを使用してこれを実行します(これは本番サーバーに影響します)。
ヘルプファイルを必要とする世界最大のクラスライブラリがあるのではないかと真剣に疑っています。では、どのようなオプションがありますか?オフにするのを忘れた魔法の「メモリ不足エラーでクラッシュしない」設定はありますか?
c# - 「System.OutOfMemoryException」は、まだ十分な空きメモリがある場合にスローされました
これは私のコードです:
例外: タイプ 'System.OutOfMemoryException' の例外がスローされました。
このマシンには 4GB のメモリがあります。この実行を開始すると 2.5GB が空いています。PC には明らかに 762MB の 100000000 の乱数を処理するのに十分なスペースがあります。利用可能なメモリを考慮して、できるだけ多くの乱数を保存する必要があります。生産に行くと、ボックスに 12GB あり、それを利用したいと考えています。
CLR は、最初からデフォルトの最大メモリに制限していますか? どうすればもっとリクエストできますか?
アップデート
問題がメモリの断片化によるものである場合、これを小さなチャンクに分割し、メモリ要件を段階的に追加すると役立つと思いましたが、 blockSize を微調整しても、 ArrayList の合計サイズ 256mb を超えることはできません。
私の主な方法から:
java - BufferedImageとImageIOを使用して画像を保存する際のメモリ不足の問題
いくつかのjava.awt.Imageオブジェクトをディスクに保存したいと思います。しかし、私が次のようにしようとすると:
Javaヒープスペースエラーが発生します。
私は置く必要がありました
image.getwidth(null)とimage.getHeight(null)が有効な結果を返すように、すべてのピクセルをロードします。
ヒープサイズを増やす以外に、これを行う他の方法はありますか?
java - iText を介して 1000 PDF をマージすると、java.lang.OutOfMemoryError: Java ヒープ領域がスローされます
iTextを介して1000個のPDFファイルをマージしようとしています。メモリリークがどこで発生しているのかわかりません。以下はサンプルコードです。親ファイルにマージするとすぐに子pdfファイルを削除していることに注意してください。以下のコードのバグを指摘してください。または、メモリの概念なしでこれを行うより良い方法はありますか。このプロセスはサーブレットを介して行われます (スタンドアロン プログラムではありません)。