問題タブ [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 投票する
1 に答える
21118 参照

java - Windows 上の IBM Websphere - OutOfMemoryError: スレッドの作成に失敗しました

Windows オペレーティング システム上の IBM Websphere Application Server で J2EE アプリケーションを実行しています。

時折、javacore ファイルに次の情報を含む OutOfMemoryError Exception が表示されます。

Java は次の構成で実行されます。 -Xms512m -Xmx1350m -Xscmx50M

javacore ファイルを分析すると、スレッド数はわずか 124 です。ヒープ ダンプを分析すると、ヒープが占有するメモリは約 500Mb です。

比較的正常なスレッド数とヒープ サイズが最大値よりかなり小さい場合、このエラーが表示される理由を突き止めようとしています。

これが役立つかどうかはわかりませんが、ここに javacore ファイルの先頭セクションがあります...

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

java - Tomcat 6 に SSL を追加した経験は?

週末に、エラーなしでしばらく実行されていた Tomcat 6 インスタンスに SSL セキュリティを追加しました。今朝、マシンのセッション数が増加した後、Tomcat はユーザーに 500 エラーをスローし始めました。ログを確認したところ、OutOfMemory のインスタンスが見つかり、その後に新しいスレッドを開始しようとする Google Guice に関連する多数のエラーが続きました。SSLが追加されたことで、より多くのスレッドが作成されてより多くのメモリが使用されている、またはそのような状況しか想像できません。余分なリソースがどこで、どのように使用されているかはよくわかりません。

Tomcat で SSL を使用した経験のある人が、手がかりを探す場所について何らかの方向性を示してくれることを期待していました。現時点では、問題がどこにあるのかわかりません。セットアップと構成に関する統計の一部を次に示します。

-XX:ThreadStackSize=512
初期メモリ プール: 128MB
最大メモリ プール: 1024MB
スレッド スタック サイズ: 512KB

少なくとも成功への道を見つけようと、さまざまな方法でこれらを調整してきました。これまでのところ、サーバーを再起動してから約 5 分後にパフォーマンスが低下し始めます。どんな方向性でも大歓迎です。

0 投票する
9 に答える
9440 参照

.net - 120 MB の CSV ファイルの String.Split() での .NET System.OutOfMemoryException

C# を使用して、約 120 MB のプレーンテキスト CSV ファイルを読み込んでいます。最初は行ごとに読み取って解析を行いましたが、最近、ファイルの内容全体を最初にメモリに読み取る方が数倍高速であることがわかりました。CSV には引用符の中にコンマが埋め込まれているため、解析はすでに非常に低速です。つまり、正規表現の分割を使用する必要があります。これは、確実に機能することがわかった唯一のものです。

内容全体をメモリに読み取った後に解析を行うために、改行文字で文字列分割を行い、各行を含む配列を取得します。ただし、120 MB のファイルでこれを行うと、System.OutOfMemoryException. コンピューターに 4 GB の RAM が搭載されているのに、メモリがすぐに不足してしまうのはなぜですか? 複雑な CSV をすばやく解析するより良い方法はありますか?

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

http - ActiveMQ 5.2.0 + REST + HTTP POST = java.lang.OutOfMemoryError

まず、JMS と ActiveMQ に関しては初心者です。

HTTP POST 経由で XML メッセージをキューに挿入するメッセージ プロデューサーのミドルウェアとして機能するメッセージング ソリューションを検討しています。プロデューサーは、変更できない C++ で記述された既存のシステムです (そのため、Java と C++ API は廃止されました)。

「デモ」の例といくつかの試行錯誤を使用して、(Windows ボックスで) やりたいことの実際の例をまとめました。

"webapps" の下のテスト ディレクトリに構成した web.xml は、プロデューサーから受信した HTTP POST メッセージが MessageServlet によって処理されることを指定します。

「activemq.xml」にテキスト アプリの行を追加しました (「ow」はテスト アプリのディレクトリです)。

メッセージをキューに「挿入」するテスト スクリプトを作成しましたが、これはうまく機能します。

私が直面している問題は、REST/HTTP POST を介してメッセージを挿入し続けると、ActiveMQ によって使用されるメモリ消費とスレッド数が増加し続けることです (タイムリーなコンシューマーと、低速または存在しないコンシューマーがある場合に発生します) )。

メモリ消費量が約 250MB になり、スレッド数が 5000 を超えると (Windows タスク マネージャーに表示されるように)、ActiveMQ がクラッシュし、ログに次のように表示されます。

スレッド「ActiveMQ Transport Initiator: vm://localhost#3564」の例外 java.lang.OutOfMemoryError: 新しいネイティブ スレッドを作成できません

あたかも Jetty が各 HTTP POST を処理するために新しいスレッドを生成しているかのようであり、スレッドが停止することはありません。

私はこのページを見ました:

http://activemq.apache.org/javalangoutofmemory.html

試してみましたが、問題は解決しませんでした(ただし、変更の意味も完全には理解していませんでした)。

誰にもアイデアはありますか?

ありがとう!

  • ブルース・ロス

PS - 価値のある「テスト メッセージ プロデューサー」の Python スクリプトを以下に含めました。100 メッセージのバッチを作成し、タスク マネージャーで ActiveMQ のメモリ消費とスレッド数を監視しながら、コマンド ラインからスクリプトを手動で実行し続けました。

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

.net - すべてのシステムメモリを使い果たすことなく、.NETプロセスのメモリを使い果たす方法

問題は単純です。いくつかのxmlファイルでETLを実行するプロセスがあります。非常に大きなxmlファイルを取得し始め、OutOfMemoryExceptionsを取得し始めました。

プロセスの修正は比較的簡単です。ただし、NUnitスイートの単体テストを実行して、プロセスが非常に大きなファイルを引き続き処理できることを確認したいと思います。ただし、実際に開発ワークステーションのメモリが不足すると、マシンの速度が低下し、時間がかかります。巨大なテストファイルをバージョン管理に保存することも悪い考えです。プロセス、スレッド、またはアプリドメインを人為的に制限して、固定量のRAM、たとえば128メガバイトのみを使用することができれば、ワークステーションをひざまずかせない小さな単体テストを作成できます。

助言がありますか?P / InvokeできるアンマネージAPIはありますか?

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

c# - ImageList / Image OutOfMemoryException

ImageList から Image を取得するときに OutOfMemoryException が発生し、問題の適切な解決策を見つけることができませんでした。

ListViewItems を描画するためのイベントが関連付けられたカスタム ListView コントロールがあります。次に、アイテムを描画するように設計された静的メソッドを呼び出します。

約 300 項目の ListView の場合、ListView がスクロールされるたびにメモリが約 100Mb 増加します。問題のあるコードは、次のコードまで追跡されています。

(確かに WinXP では) ガベージ コレクションが正しく機能していないようで、メモリのスパイラルが発生しています。問題を解決するためにコード ブロックの直後に image.Dispose() を追加しようとしましたが、効果はありません。

これまでに見つけた唯一の解決策は、静的メソッドの最後で GC.Collect() を呼び出すことです。ただし、これの問題は、ListView がゆっくりと再描画され、再描画中に画面にアーティファクトが表示されることです。

他の誰かがこれを経験しましたか?または回避策を知っていますか?

0 投票する
1 に答える
782 参照

c# - System.Security.Policy.Evidence、Web サービス、および LoH の吹き飛ばし

開発された新しいアプリケーションは、Web サービスを多用しています。定期的にメモリ不足の例外が発生するようになりました (使用量の増加に伴い)。メモリ ダンプを確認すると、同じサイズのバイト [] が多数あることに気付きました。これらの byte[] のハンドルを見ると、それらが System.Security.Policy.Evidence によって参照されていることに気付きました

さらに調べてみると、これらのメモリ割り当ては、Web サービス クラスを含む実際のアセンブリ (dll) であることがわかりました (特にアセンブリのうちの 2 つは 128 回と 115 回メモリ内にありました)。ここでいくつかの情報を見つけました --> blogs.msdn.com/tess/archive/2008/06/25/asp-net-memory-leak-byte-arrays-rooted-in-system-security-policy-evidence.aspx

そしてここ --> blogs.javista.com/2009/03/18/best-practices-for-crm-memory-usage/

しかし、この問題に関する他の多くの参照を見つけることができませんでした。(セキュリティ ポリシーをチェックするために Web サービス アセンブリをメモリにロードする .NET フレームワーク)。

現在、私が目にしている唯一の解決策の 1 つは、Web サービスのアセンブリを、ライブラリを参照する小さなアセンブリに分離することです。

ポリシーをチェックするために .NET フレームワークがアセンブリ全体をメモリにロードする必要がある理由がわかりません。他の誰かがこれに遭遇したかどうか、およびあなたのソリューションが何であるかを確認したかったのです。

ありがとう、ダン

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

c# - C#: NullReferenceException で OutOfMemoryException が発生するのはなぜですか?

私はOutOfMemoryException以前に取得しましたが、それが何のためにあるのかわかりませんでした。まったく意味がありませんでした。私のコードを掘り下げて、どこかが null をチェックするのを忘れていたことを突然思い出しました。私の意見では、それは原因ではありませんが、OutOfMemoryExceptionもちろん修正しました。そして、私がやったとき、例外はもう現れませんでした!

そこで、もう一度チェックを外して、さらに例外を調べました。そして、タイプの InnerExceptionNullReferenceExceptionとスタック トレースがあったことがわかりまし

しかし、なぜ私は得たのOutOfMemoryExceptionですか?こんなことは今までになかった...私には意味がありません...


もう少しコンテキストを提供したいのですが、プロジェクト全体をアップロードする必要がなければ、実際には多くを語ることはできません。しかし、それが起こった特定の場所は次のようになります。

修正はif(exportParameters != null)、コード ブロックの前に配置することでした。exportParametersList<ExportParameter>あった失敗した場合を除いて、nullです。

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

java - 32 ビット プロセスを 64 ビット システムで実行する場合、より多くのメモリが必要ですか?

私はかなりメモリを消費するJavaアプリケーションを持っています。Windows XP Professional を搭載した私の 32 ビット システムでは、アプリケーションを指定すると問題なく動作します-Xmx1280m。以下のすべてがjava.lang.OutOfMemoryError: Java heap space例外になります。

-Xms1400m同じアプリケーションを 64 ビットの Windows XP Professional で実行すると (他はまったく同じ) 、OutOfMemory 状態を防ぐ必要があります。

私の理解では、C プログラムがあり、それを 32 ビット用にコンパイルし、64 ビット用にコンパイルすると、64 ビット バージョンではポインタがより広くなるため、より多くのメモリが必要になります。ただし、私の Java の例では、仮想マシン (Sun) は同じで、バイトコードも同じです。

64 ビット マシンでより多くのメモリが必要なのはなぜですか?