我经常发生JVM崩溃。将opencv与Java Imgproc库一起使用。它从Imgproc库的findContours函数调用。
堆栈:[0x00007febe3875000,0x00007febe38f6000], sp = 0x00007febe38f3ea0,可用空间= 507k本机帧:(J =已编译 Java代码,j =解释后的代码,Vv = VM代码,C =本机代码)C [libopencv_java342.so + 0x4a63f4] cv :: _ OutputArray :: create(int,int const *,int,int,bool,int)const + 0x1b4
Java框架:(J =编译的Java代码,j =解释的,Vv = VM代码)J 103505 org.opencv.imgproc.Imgproc.findContours_1(JJJII)V(0字节)@ 0x00007fecec55770e [0x00007fecec5576c0 + 0x4e]
致命错误:
Java运行时环境检测到致命错误:
SIGSEGV(0xb)位于pc = 0x00007febd82453f4,pid = 3462,tid = 0x00007febe38f5700
JRE版本:Java(TM)SE运行时环境(8.0_141-b15)(内部版本1.8.0_141-b15) Java虚拟机:Java HotSpot(TM)64位服务器虚拟机(25.141-b15混合模式linux-amd64压缩的oops) 有问题的框架: C [libopencv_java342.so + 0x4a63f4] cv :: _ OutputArray :: create(int,int const *,int,int,bool,int)const + 0x1b4
无法写入核心转储。核心转储已被禁用。要启用核心转储,请在再次启动Java之前尝试“ ulimit -c unlimited”
其他详细信息:
尝试调整JVM内存,但没有帮助。任何帮助将不胜感激。
我们正在使用Imgproc JAVA library,其下面使用libopencv_java342.so。操作系统是Amazon Linux AMI VERSION =“ 2018.03(基于rhel fedora)
opencv的以下函数正在从库中调用。
私有静态本机无效findContours(long image_nativeObj,long Contours_mat_nativeObj,长等级_nativeObj,int模式,int 方法);