JNI ERROR global reference table overflow

网上查了非常多的文章,都没有特别有用,只能自己分析已有的log,从crash dump的log中看到报错的是systemui模块,具体报错log如下:


Cmdline: com.android.systemui

pid: 3329, tid: 3329, name: ndroid.systemui >>> com.android.systemui <<<

log中的Summary下显示是因为BinderCacheManager的BinderDeathTracker被引用了50133次,和其他的一些引用加起来超过了51200的限制。


Summary:

50113 of android.telephony.BinderCacheManager$BinderDeathTracker (50113 unique instances)

adb log中有一个log频繁打印,找到了systemui模块下的MobileSignalController.java中的isVowifiAvailable()方法。

39645766 20.08.2022 23:15:03.992 Main   3329  3446  LogcatInfo     NetworkController.MobileSignalController(1) isVowifiAvailable,mVoWiFiSettingEnabled = falsemMMtelVowifi = false

在isVowifiAvailable()方法中,会去获取BinderCacheManager,并且调用到getBinder()方法,getBinder()方法接着会初始化BinderDeathTracker。由于MobileSignalController中的isVowifiAvailable()方法会被频繁调用,导致了对BinderDeathTracker的引用慢慢的超过了限制。


修改前代码:

try {

    final ImsMmTelManager imsMmTelManager =

            ImsMmTelManager.createForSubscriptionId(activeDataSubId);

    // From CarrierConfig Settings

    mVoWiFiSettingEnabled = imsMmTelManager.isVoWiFiSettingEnabled();

} catch (IllegalArgumentException exception) {

    Log.w(mTag, "fail to get Wfc settings. subId=" + activeDataSubId, exception);

}

 

 

修改后代码:

ImsMmTelManager imsMmTelManager;

try {

    imsMmTelManager =

            ImsMmTelManager.createForSubscriptionId(activeDataSubId);

    // From CarrierConfig Settings

    mVoWiFiSettingEnabled = imsMmTelManager.isVoWiFiSettingEnabled();

} catch (IllegalArgumentException exception) {

    Log.w(mTag, "fail to get Wfc settings. subId=" + activeDataSubId, exception);

} finaly {

    imsMmTelManager = null;

}

解决方案:因为这个是局部变量,在使用完以后及时进行设为null值,不再对ImsMmTelManager引用。

经验:可以在adb log中查看一些重复出现多次的log,查看log附近的代码是否有对Summary中显示的类或者方法有直接或者间接调用的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: SPSS客户端错误JNI错误是指在使用SPSS软件时出现的一种错误,通常是由于Java Native Interface(JNI)引起的。这种错误可能会导致SPSS软件无法正常运行或执行某些操作。要解决这个问题,可以尝试重新安装SPSS软件或更新Java运行环境。如果问题仍然存在,建议联系SPSS技术支持人员以获取更多帮助。 ### 回答2: SPSS是一种非常常见的数据分析软件,但在使用过程中,可能会遇到SPSS客户端错误jni错误的情况。那么,什么是SPSS客户端错误jni错误呢? 首先,需要了解一下jni是什么。jni指Java Native Interface,是Java调用Native(C/C++)代码的接口。它可以在Java中调用其他语言编写的程序库,比如C和C++等程序库。在SPSS使用过程中,可能需要调用一些与Java有关的程序库,因此就会出现SPSS客户端错误jni错误的情况,即SPSS无法正确加载Java程序库而出现的错误。 SPSS客户端错误jni错误可能出现的原因有很多,主要有以下几种: 1. SPSS安装程序问题。有时,SPSS安装程序可能会出现问题,导致某些组件无法正确安装。这可能会导致SPSS无法正确调用Java程序库而出现jni错误。 2. Java版本兼容性问题。SPSS需要使用特定版本的Java程序库,如果Java版本与SPSS要求的不符,就会出现无法加载jni库的错误。 3. 系统环境问题。SPSS需要在一些特定的操作系统版本上运行,如果操作系统版本与SPSS的要求不符,也会导致无法加载jni库的错误。 针对SPSS客户端错误jni错误,可以尝试以下解决方案: 1. 尝试重新安装SPSS以确保所有组件都已正确安装。 2. 检查Java版本是否与SPSS要求的兼容。如果不兼容,可以升级或降级Java版本。 3. 检查操作系统是否被SPSS所支持。如果不支持,可以尝试更换支持的操作系统版本。 总之,在使用SPSS的过程中,出现SPSS客户端错误jni错误是一件比较麻烦的事情。如果需要解决此问题,需要仔细检查以上几个方面,以确定错误的具体原因并尝试相应的解决方案。 ### 回答3: SPSS是一种非常流行的统计学软件,它帮助人们进行各种数据分析和统计计算。然而,使用SPSS时可能会出现各种错误,其中之一是“SPSS客户端错误JNI错误”。 SPSS客户端错误JNI错误是指SPSS在调用Java Native Interface(JNI)时遇到了问题。JNI是一个用于连接Java代码和本地代码(如C或C++)的接口,它使Java程序能够访问本地系统资源和库。 当SPSS在调用JNI时发生错误,通常是由于以下原因之一: 1. 配置问题:SPSS需要正确配置JNI和Java运行时环境,以便能够正确调用JNI。 如果这些配置有误或未安装Java运行时环境,则会发生SPSS客户端错误JNI错误。 2. SPSS文件问题:有时SPSS文件可能损坏或有错误,导致SPSS无法调用JNI并出现错误。 在这种情况下,只需重新创建或修复SPSS文件即可解决问题。 3. 系统设置问题:有时候系统设置可能会阻止SPSS正确调用JNI并出现错误。 检查系统设置,并确保其不会干扰SPSS正确执行。 要解决SPSS客户端错误JNI错误,可以尝试以下步骤: 1. 首先,确保已正确安装和配置Java运行时环境。 如果尚未安装Java,请下载并安装最新版本的Java运行时环境并重新启动计算机。 2. 检查SPSS文件是否有错误或损坏,并尝试重新创建或修复文件。 3. 检查计算机系统设置,查看是否有任何可能干扰SPSS的设置。 4. 如果问题仍然存在,请尝试重新安装SPSS,并确保其正确配置了JNI。 总而言之,SPSS客户端错误JNI错误是一种常见的SPSS错误,可能是由于配置问题、文件问题或系统设置问题等原因。 如果出现这种错误,请按上述步骤进行解决,并确保已正确安装和配置Java运行时环境。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值