【问题标题】:can you help me with this error on my project?你能帮我解决我项目中的这个错误吗?
【发布时间】:2013-01-28 14:47:04
【问题描述】:

当点击按钮运行时... 在输出中......

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)

【问题讨论】:

  • 分享代码对回答这个问题会更有帮助。
  • 看起来您需要在 JVM 中为该项目分配更多内存。
  • 你是从 eclipse 运行它吗?

标签: java opencv netbeans javacv


【解决方案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 的一部分)分析转储以查找内存泄漏(请参阅参考资料)。

仅适用于 netbeans

正确的做法是在项目上右击选择“Properties”然后选择“Run”;在那里您可以适当地设置 VM 选项(例如,-Xmx256m)。它应该看起来像这样:

【讨论】:

    【解决方案2】:
    java.lang.OutOfMemoryError OpenCV Error: Insufficient memory
    

    您似乎正在将大文件加载到内存中。试试increase memory using -Xms and -Xmx settings

    如果您的内存大于文件大小,则可能的原因可能是一些内存泄漏。

    【讨论】:

    • 是的,这个文件输入太大,所以要我重新安装我的netbeans或opencv?你能给我解决办法吗?
    【解决方案3】:

    您需要分配至少 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.
    

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-08-29
        • 1970-01-01
        • 1970-01-01
        • 2022-12-15
        • 1970-01-01
        相关资源
        最近更新 更多