美文网首页
ContentProvider 批量写入造成系统大量gc

ContentProvider 批量写入造成系统大量gc

作者: alanBans | 来源:发表于2020-09-03 15:04 被阅读0次
    gc过程

    可以看到,单表批量写入82208条数据。

    ContentProvider写入后,app造成了jvm的大量gc,并且阻塞了UI线程。

    解决办法

    1.使用事务

    重载实现contentProvider $ applyBatch() 时,使用事务

    事务可以将多次的写入集合到一次事务当中。提高效率

    事务

    2.延迟或不发送数据更新(ContentResolver.notifyChange)

    applyBatch内部也时循环调用insert方法,加入insert中写有contentResolver.notifyChange逻辑时,将会造成大量的内存消耗。

    方法:

    1.只通知频率不高且无关业务的表更新

    2.insert中加入是否正在批量插入标志符判断,当applybatch执行到最后时(期间记录数据uri),之后才执行通知

    相关文章

      网友评论

          本文标题:ContentProvider 批量写入造成系统大量gc

          本文链接:https://www.haomeiwen.com/subject/sqtosktx.html