单击按钮运行时... 在输出....
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)
答案 0 :(得分:1)
java.lang.OutOfMemoryError OpenCV Error: Insufficient memory
抛出此异常因为。 OutOfMemoryError
当Java虚拟机因内存不足而无法分配对象时,垃圾收集器无法再提供更多内存。 OutOfMemoryError对象可以由虚拟机构造,就像禁用抑制和/或堆栈跟踪不可写一样。
在这种情况下的常见解决方案是:
Xmx
开关增加堆大小,例如-Xmx512m
(您可以通过使用JXM和Jconsole连接到JVM来帮助自己找到正确的值)。 -XX:-UseGCOverheadLimit
停用错误检查
第三种方法只会产生另一种错误消息 - 与堆相关的java.lang.OutOfMemoryError。 -XX:+HeapDumpOnOutOfMemoryError
添加到JAVA_OPTS并使用IBM Memory Analyzer(IBM Support Assistant Workbench的一部分)分析转储,查找内存泄漏(请参阅参考资料)。仅适用于netbeans 。
正确的方法是右键单击项目并选择“属性”,然后选择“运行”;在那里你可以适当地设置VM选项(例如-Xmx256m)。看起来应该是这样的:
答案 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内存