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();
}
}
目前刚加,还不知道具体结果,不太好说,等下次版本迭代后再验证