2016-08-08 16 views
-1

私は起動して数日間実行させるJavaプロセスを持っています。このプロセスのログは、プロセスの生存期間の最後まで、次の2行が表示され、その後は何も表示されません。Javaプログラムの 'std :: bad_alloc'

terminate called after throwing an instance of 'std::bad_alloc' 
    what(): std::bad_alloc 

プロセスが終了したときに実行されるシャットダウンロジックがありますが、これらの2つのログ行はすべて表示されます。

このstd::bad_allocの原因は何ですか?私はこのエラーに関するいくつかの他の記事を見てきましたが、C++ではなく、Javaを使用していますが、すべてC++プログラマのものです。これはJVMのバグを示していますか、それともOutOfMemoryErrorなどのJVM関連のエラーの結果ですか?

+0

あるいくつかのDLLやC/C++で書かれた同様のLIBSを使用してコード? –

+0

は小さなメモリリークのように聞こえ、オペレーティングシステムはjvmにメモリの割り当てに問題があると伝えています。 – Javant

答えて

1

(Javaヒープとは異なる)ネイティブメモリーが不足しています。これを修正するには、あなたのコード(またはクラスパス上のjar)がC++を使っていることを理解し、タイムリーにgcされていることを確認する必要があります。

たとえば、あなたが近くに呼び出していない場合、あなたはおそらく同じ問題に遭遇するだろう: https://docs.oracle.com/javase/7/docs/api/java/util/zip/GZIPInputStream.html#close()

+0

C++であると思ったでしょう – Javant

+0

Cにスコープ解決演算子がありません – amos

関連する問題