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();
   }
}

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 目录介绍 1.1 java.lang.ClassNotFoundException类找不到异常 1.2 java....
    杨充211阅读 575评论 0 1
  • 原文阅读 前言 这段时间懈怠了,罪过! 最近看到有同事也开始用上了微信公众号写博客了,挺好的~给他们点赞,这博客我...
    码农戏码阅读 6,018评论 2 31
  • [TOC] 内存管理 一、托管堆基础 在面向对象中,每个类型代表一种可使用的资源,要使用该资源,必须为代表资源的类...
    _秦同学_阅读 3,876评论 0 3
  • 所有知识点已整理成app app下载地址 J2EE 部分: 1.Switch能否用string做参数? 在 Jav...
    侯蛋蛋_阅读 2,507评论 1 4
  • 整理来源:腾讯bugly,平时遇到的问题等,本文仅供个人查阅使用并做长期更新,不作其他用途。 1.崩溃分析策略 1...
    农民工Alan阅读 27,260评论 7 25