同声 2021-10-19 19:34 采纳率: 66.7%
浏览 427
已结题

android 视频预览硬解码异常 JNI ERROR (app bug): weak global reference table overflow (max=51200)

我在安卓app中,采用采用海康相机预览视频,采用硬解码,运行5分钟后,就报如下错误:
A/art: art/runtime/indirect_reference_table.cc:98] JNI ERROR (app bug): weak global reference table overflow (max=51200)

art/runtime/indirect_reference_table.cc:98] weak global reference table dump:

art/runtime/indirect_reference_table.cc:98]   Last 10 entries (of 51200):

art/runtime/indirect_reference_table.cc:98]     51199: 0x1319a220 java.lang.Thread

art/runtime/indirect_reference_table.cc:98]     51198: 0x1319a1c0 java.lang.Thread

art/runtime/indirect_reference_table.cc:98]     51197: 0x1319a160 java.lang.Thread

art/runtime/indirect_reference_table.cc:98]     51196: 0x1319a100 java.lang.Thread

art/runtime/indirect_reference_table.cc:98]     51195: 0x130f8fa0 java.lang.Thread

art/runtime/indirect_reference_table.cc:98]     51194: 0x130f8f40 java.lang.Thread

art/runtime/indirect_reference_table.cc:98]     51193: 0x130f8ee0 java.lang.Thread

art/runtime/indirect_reference_table.cc:98]     51192: 0x130f8e80 java.lang.Thread

art/runtime/indirect_reference_table.cc:98]     51191: 0x130f8e20 java.lang.Thread

art/runtime/indirect_reference_table.cc:98]     51190: 0x130f8dc0 java.lang.Thread

art/runtime/indirect_reference_table.cc:98]   Summary:

art/runtime/indirect_reference_table.cc:98]     cleared jweak (count=0)

art/runtime/indirect_reference_table.cc:98]         1 of java.lang.Thread

art/runtime/indirect_reference_table.cc:98]     cleared jweak (count=0)

art/runtime/indirect_reference_table.cc:98]         3 of android.media.MediaCodec (3 unique instances)

art/runtime/indirect_reference_table.cc:98]      4512 of java.lang.Class (4512 unique instances)

art/runtime/indirect_reference_table.cc:98]         1 of java.lang.ThreadGroup

art/runtime/indirect_reference_table.cc:98]       933 of java.lang.Thread (933 unique instances)

art/runtime/indirect_reference_table.cc:98] 

E/相机播放SDK:: inputData failed with: 11, i:0

E/相机播放SDK:: inputData failed with: 11, i:0

E/相机播放SDK:: inputData failed with: 11, i:0

E/相机播放SDK:: inputData failed with: 11, i:100

E/相机播放SDK:: inputData failed with: 11, i:100

E/相机播放SDK:: inputData failed with: 11, i:100

E/相机播放SDK:: inputData failed with: 11, i:200

E/相机播放SDK:: inputData failed with: 11, i:200

E/相机播放SDK:: inputData failed with: 11, i:200

E/相机播放SDK:: inputData failed with: 11, i:300

E/相机播放SDK:: inputData failed with: 11, i:300

E/相机播放SDK:: inputData failed with: 11, i:300

E/相机播放SDK:: inputData failed with: 11, i:400

E/相机播放SDK:: inputData failed with: 11, i:400

E/相机播放SDK:: inputData failed with: 11, i:400

E/相机播放SDK:: inputData failed with: 11, i:500

I/HCNetSDK: [2021-10-19 10:01:33.987][DBG] ID-IP-CHAN[0-192.168.1.66-1] [CGetStreamBase::DoExchange] recv timeout[2], m_bReConnecting[0], maxtimes[6]!

I/HCNetSDK: [2021-10-19 10:01:33.987][DBG] ID-IP-CHAN[1-192.168.1.64-1] [CGetStreamBase::DoExchange] recv timeout[2], m_bReConnecting[0], maxtimes[6]!

I/HCNetSDK: [2021-10-19 10:01:33.988][DBG] ID-IP-CHAN[2-192.168.1.65-1] [CGetStreamBase::DoExchange] recv timeout[2], m_bReConnecting[0], maxtimes[6]!

E/art: Unexpected time out during dump checkpoint.

A/art: art/runtime/barrier.cc:89] Check failed: !count_ Attempted to destroy barrier with non zero count

A/art: art/runtime/runtime.cc:298] Runtime aborting --- recursively, so no thread-specific detail!

art/runtime/runtime.cc:298] 

A/libc: Fatal signal 6 (SIGABRT), code -6 in tid 8063 (Thread-46930)

硬解码部分代码,显示视频直接采用的surfaceview

private void processRealData(int iPlayViewNo, int iDataType, byte[] pDataBuffer, int iDataSize, int iStreamMode) {
        if (HCNetSDK.NET_DVR_SYSHEAD == iDataType) {
            if (m_iPort >= 0) {
                return;
            }
            m_iPort = Player.getInstance().getPort();
            if (m_iPort == -1) {
                Log.e(TAG, "getPort is failed with: " + Player.getInstance().getLastError(m_iPort));
                return;
            }
            Log.i(TAG, "getPort succ with: " + m_iPort);
            if (iDataSize > 0) {
                if (!Player.getInstance().setStreamOpenMode(m_iPort, iStreamMode)) //set stream mode
                {
                    Log.e(TAG, "setStreamOpenMode failed");
                    return;
                }
                if (!Player.getInstance().openStream(m_iPort, pDataBuffer, iDataSize, 4 * 1024 * 1024)) //open stream
                {
                    Log.e(TAG, "openStream failed");
                    return;
                }

                if(bCheckHD)
                {
                    Player.getInstance().setHardDecode(m_iPort, 1);
                }

                while (!m_bSurfaceCreated) {
                    try {
                        Thread.sleep(100);
                    } catch (InterruptedException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                    Log.i(TAG, "wait 100 for surface, handle:" + iPlayViewNo);
                }

                if (!Player.getInstance().play(m_iPort, getHolder())) {
                    Log.e(TAG, "play failed,error:" + Player.getInstance().getLastError(m_iPort));
                    return;
                }
            }
        } else {
         
            for (int i = 0; i < 2000; i++) {
                if (!Player.getInstance().inputData(m_iPort, pDataBuffer, iDataSize)) {
                    Log.e(TAG, "inputData failed with: " + Player.getInstance().getLastError(m_iPort));
                } else {
                    break;
                }
                try {
                    Thread.sleep(10);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }
    }

请问报错为jni 弱引用表溢出,要怎么解决呢?

  • 写回答

2条回答 默认 最新

  • 五一编程 2021-10-22 13:35
    关注

    很明显是内存泄露,排查内存泄露
    for (int i = 0; i < 2000; i++) {
    }为啥要做两千次

    评论

报告相同问题?

问题事件

  • 系统已结题 10月27日
  • 赞助了问题酬金 10月20日
  • 赞助了问题酬金 10月20日
  • 创建了问题 10月19日

悬赏问题

  • ¥20 5037端口被adb自己占了
  • ¥15 python:excel数据写入多个对应word文档
  • ¥60 全一数分解素因子和素数循环节位数
  • ¥15 ffmpeg如何安装到虚拟环境
  • ¥188 寻找能做王者评分提取的
  • ¥15 matlab用simulink求解一个二阶微分方程,要求截图
  • ¥30 乘子法解约束最优化问题的matlab代码文件,最好有matlab代码文件
  • ¥15 写论文,需要数据支撑
  • ¥15 identifier of an instance of 类 was altered from xx to xx错误
  • ¥100 反编译微信小游戏求指导