开发者社区> 问答> 正文

javacv转流,jvm异常停止?报错

下面是hs_err_pid.log的异常信息

#  SIGSEGV (0xb) at pc=0x00007f399ca531ff, pid=4843, tid=0x00007f399dfa3700
#
# JRE version: Java(TM) SE Runtime Environment (8.0_161-b12) (build 1.8.0_161-b12)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (25.161-b12 mixed mode linux-amd64 compressed oops)
# Problematic frame:
# C  [libavutil.so.55+0x101ff]  av_strstart+0x1f
#
# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
具体停止的线程是

Stack: [0x00007f399df23000,0x00007f399dfa4000],  sp=0x00007f399dfa0cc8,  free space=503k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
C  [libavutil.so.55+0x101ff]  av_strstart+0x1f

Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
j  org.bytedeco.javacpp.avformat.avformat_open_input(Lorg/bytedeco/javacpp/avformat$AVFormatContext;Ljava/lang/String;Lorg/bytedeco/javacpp/avformat$AVInputFormat;Lorg/bytedeco/javacpp/avutil$AVDictionary;)I+0
j  org.bytedeco.javacv.FFmpegFrameGrabber.startUnsafe()V+652
j  org.bytedeco.javacv.FFmpegFrameGrabber.start()V+6

。。。。。

异常发生的时候,堆状况:

Heap:
 par new generation   total 2073600K, used 229593K [0x00000005c0000000, 0x000000064ca00000, 0x000000064ca00000)
  eden space 1843200K,  11% used [0x00000005c0000000, 0x00000005cca2d470, 0x0000000630800000)
  from space 230400K,   9% used [0x0000000630800000, 0x0000000631e08fa0, 0x000000063e900000)
  to   space 230400K,   0% used [0x000000063e900000, 0x000000063e900000, 0x000000064ca00000)
 concurrent mark-sweep generation total 6084608K, used 0K [0x000000064ca00000, 0x00000007c0000000, 0x00000007c0000000)
 Metaspace       used 30952K, capacity 31516K, committed 31728K, reserved 1077248K
  class space    used 3623K, capacity 3799K, committed 3880K, reserved 1048576K

最开始在centos跑这个服务的时候,一段时间报错OOM,物理内存不够。。然后我加了6个G内存,跑了一周jvm崩了。。来个大神救救我啊QAQ

展开
收起
爱吃鱼的程序员 2020-06-07 16:45:23 1004 0
2 条回答
写回答
取消 提交回答
  • 我也遇到了类似的问题,应该不是内存的问题,是依赖的问题。
    同样的包我找了四台电脑测试,只有一台电脑会出错,然后我换了一套javacv的依赖就没得问题了

    2023-08-09 17:26:16
    赞同 展开评论 打赏
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB
                        <p>从线程反馈的信息,是停止在avformat_open_input这个方法,此时第一感觉是打开了一个超过内存大小的文件,然后看堆栈信息,新生代三个区都很空闲,大概总量2G,文件是否超过2G?导致没有放到新生代,直接放到永久代了?如果排除,下面元存储和类空间都比较小,而且几乎占满了,可以考虑增加类空间和元存储的大小,需要注意的是元存储是直接使用得jvm外的剩余内存,如果不够,也会OOM</p>
    
                    
    
                                回复 <a class="referer" target="_blank">@尚浩宇</a>  : thanks
                        
    
                                回复 <a class="referer" target="_blank">@菩提树下的猫</a>  : 先试着增大永久代内存,比如512M
                        
    
                            看样子是不是javacpp的classloader引用过多,没有释放,导致永久代内存溢出了呢?这个问题该怎么解决呢
                        
    
                        <p>请问楼主解决了吗</p>
    
    2020-06-07 16:45:37
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
JVM实战 立即下载
JVM的GC 立即下载
基于JVM的脚本语言开发、运用实践 立即下载