android oppo系统 gc timeout异常解决方案

java.util.concurrent.TimeoutException

该异常表示调用超时。
[解决方案]:一般是系统在gc时,调用对象的finalize超时导致,解决办法:
1.检查分析finalize的实现为什么耗时较高,修复它;
2.检查日志查看GC是否过于频繁,导致超时,减少内容开销,防止内存泄露。

在OPPO系统中通过如下方法解决
在application类中,调用如下方法

/**
 * 解决oppo GC TimeoutExceptions
 */
public void fixOPPOTimeout() {
   try {
      Class clazz = Class.forName("java.lang.Daemons$FinalizerWatchdogDaemon");
      Method method = clazz.getSuperclass().getDeclaredMethod("stop");
      method.setAccessible(true);
      Field field = clazz.getDeclaredField("INSTANCE");
      field.setAccessible(true);
      method.invoke(field.get(null));
   }
   catch (Throwable e) {
      e.printStackTrace();
   }
}

目前刚加,还不知道具体结果,不太好说,等下次版本迭代后再验证

你可能感兴趣的:(android oppo系统 gc timeout异常解决方案)