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

抛出此异常是因为。 内存不足错误

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

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

  1. 优化您的代码以使用更少的内存和/或重用对象而不是创建新对象,从而减少垃圾收集器运行的次数。如果您创建了很多临时对象(例如在循环中),您应该尝试重用它们。
  2. Xmx例如,使用 switch增加堆大小-Xmx512m(您可以通过使用 JXM 和 Jconsole 连接到 JVM 来帮助自己找到正确的值)。
  3. 使用第三种方法禁用错误检查-XX:-UseGCOverheadLimit 只会导致另一种错误消息 - 与堆相关的 java.lang.OutOfMemoryError。
  4. 添加-XX:+HeapDumpOnOutOfMemoryError到 JAVA_OPTS 并使用 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 回答