你能帮我解决一下这个错误吗?

时间:2013-02-13 05:36:37

标签: java opencv netbeans javacv

单击按钮运行时... 在输出....

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 个答案:

答案 0 :(得分:1)

java.lang.OutOfMemoryError OpenCV Error: Insufficient memory

抛出此异常因为。 OutOfMemoryError

  

当Java虚拟机因内存不足而无法分配对象时,垃圾收集器无法再提供更多内存。 OutOfMemoryError对象可以由虚拟机构造,就像禁用抑制和/或堆栈跟踪不可写一样。

在这种情况下的常见解决方案是:

  1. 优化代码以使用更少的内存和/或重用对象而不是创建新的代码,从而减少垃圾收集器运行的次数。如果你创建了很多临时对象(例如在循环中),你应该尝试重用它们。
  2. 使用Xmx开关增加堆大小,例如-Xmx512m(您可以通过使用JXM和Jconsole连接到JVM来帮助自己找到正确的值)。
  3. 使用-XX:-UseGCOverheadLimit停用错误检查 第三种方法只会产生另一种错误消息 - 与堆相关的java.lang.OutOfMemoryError。
  4. -XX:+HeapDumpOnOutOfMemoryError添加到JAVA_OPTS并使用IBM Memory Analyzer(IBM Support Assistant Workbench的一部分)分析转储,查找内存泄漏(请参阅参考资料)。
  5. 仅适用于netbeans

    正确的方法是右键单击项目并选择“属性”,然后选择“运行”;在那里你可以适当地设置VM选项(例如-Xmx256m)。看起来应该是这样的:

    enter image description here

答案 1 :(得分:0)

java.lang.OutOfMemoryError OpenCV Error: Insufficient memory

好像你正在将大文件加载到内存中。尝试increase memory using -Xms and -Xmx settings

如果你的内存大于文件大小,那么可能的原因可能是内存泄漏。

答案 2 :(得分: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.

答案 3 :(得分:0)

JVM崩溃的症状或没有用于在JVM中分配资源的内存。尝试调整程序或增加JVM内存