1

ボタンをクリックすると実行...出力で....

java.lang.OutOfMemoryError
OpenCV Error: Insufficient memory (Failed to allocate 6220800 bytes) in unknown function, file ..\..\..\src\opencv\modules\core\src\alloc.cpp, line 52
Exception in thread "Thread-4" java.lang.RuntimeException: ..\..\..\src\opencv\modules\core\src\alloc.cpp:52: error: (-4) Failed to allocate 6220800 bytes    
    at com.googlecode.javacv.cpp.opencv_core.cvCloneImage(Native Method)
    at com.googlecode.javacv.cpp.opencv_core$IplImage.clone(opencv_core.java:521)
    at vidtracking.MainView.backgroundSubtraction(MainView.java:666)
    at vidtracking.MainView.access$1000(MainView.java:32)
    at vidtracking.MainView$8.run(MainView.java:461)
4

4 に答える 4

1
java.lang.OutOfMemoryError OpenCV Error: Insufficient memory

この例外がスローされるためです。 OutOfMemoryError

Java 仮想マシンがメモリ不足のためにオブジェクトを割り当てることができず、ガベージ コレクタによって使用できるメモリがなくなった場合。OutOfMemoryError オブジェクトは、抑制が無効になっているか、スタック トレースが書き込み可能でないかのように、仮想マシンによって構築される場合があります。

この場合の一般的な解決策は次のとおりです。

  1. コードを最適化して、新しいオブジェクトを作成する代わりに、使用するメモリを減らしたり、オブジェクトを再利用したりして、ガベージ コレクターの実行回数を減らします。大量の一時オブジェクトを (たとえばループで) 作成する場合は、それらを再利用するようにしてください。
  2. Xmxたとえば、スイッチを使用してヒープ サイズを増やします-Xmx512m(JXM と Jconsole を使用して JVM に接続することで、正しい値を見つけることができます)。
  3. を使用してエラー チェックを無効にします-XX:-UseGCOverheadLimit 。3 番目の方法では、別の種類のエラー メッセージが表示されるだけです。
  4. JAVA_OPTSに追加-XX:+HeapDumpOnOutOfMemoryErrorし、ダンプを IBM Memory Analyzer (IBM Support Assistant Workbench の一部) で分析して、メモリー・リークを探します (参考文献を参照)。

netbeans のみ

正しい方法は、プロジェクトを右クリックして [プロパティ] を選択し、次に[実行] を選択することです。ここで、VM オプションを適切に設定できます (たとえば、-Xmx256m)。次のようになります。

ここに画像の説明を入力

于 2013-02-13T05:48:44.793 に答える
0
java.lang.OutOfMemoryError OpenCV Error: Insufficient memory

大きなファイルをメモリにロードしているようです。-Xms および -Xmx 設定を使用してメモリを増やしてみてください。

ファイル サイズよりも多くのメモリがある場合、メモリ リークが原因である可能性があります。

于 2013-02-13T05:43:14.507 に答える
0

少なくとも 6220800 バイト (つまり ~6mb) を割り当てる必要があります。
次の jvm 設定で Java アプリを実行します (より多くのヒープ サイズを割り当てるため)。

java myapp.jar -Xms10m -Xmx10m

日食の場合:

Windows Preferences -> java -> Installed JREs:
Select JRE/JDK you are using
Click Edit
Set VM arguments: -Xms10m -Xmx10m
Start your app again.
于 2013-02-13T05:44:49.083 に答える
0

JVM がクラッシュするか、JVM でリソースを割り当てるためのメモリがないという症状です。プログラムを調整するか、JVM メモリを増やしてみてください

于 2013-02-13T05:50:49.213 に答える