javacv转流,jvm异常停止

菩提树下的猫 发布于 05/02 16:43
阅读 462
收藏 0

下面是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

加载中
0
尚浩宇
尚浩宇

从线程反馈的信息,是停止在avformat_open_input这个方法,此时第一感觉是打开了一个超过内存大小的文件,然后看堆栈信息,新生代三个区都很空闲,大概总量2G,文件是否超过2G?导致没有放到新生代,直接放到永久代了?如果排除,下面元存储和类空间都比较小,而且几乎占满了,可以考虑增加类空间和元存储的大小,需要注意的是元存储是直接使用得jvm外的剩余内存,如果不够,也会OOM

菩提树下的猫
菩提树下的猫
回复 @尚浩宇 : thanks
尚浩宇
尚浩宇
回复 @菩提树下的猫 : 先试着增大永久代内存,比如512M
菩提树下的猫
菩提树下的猫
看样子是不是javacpp的classloader引用过多,没有释放,导致永久代内存溢出了呢?这个问题该怎么解决呢
0
踩不死的小强
踩不死的小强

请问楼主解决了吗

返回顶部
顶部