美文网首页
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

    可以看到,单表批量写入82208条数据。 ContentProvider写入后,app造成了jvm的大量gc,并且...

  • C++ GDAL批量创建栅格文件并写入数据

      本文介绍基于C++ 语言GDAL库,批量创建大量栅格遥感影像文件,并将数据批量写入其中的方法。   首先,我们...

  • 尚硅谷大数据技术之Flume

    1.2.4 SinkSink不断地轮询Channel中的事件且批量地移除它们,并将这些事件批量写入到存储或索引系统...

  • 01-Flume处理流数据

    1 为什么要是有Flume HDFS和HBase支持批量写入数据的能力,处理持续写入能力较差; 为了提高系统稳定性...

  • 分页对齐写入文件——golang实现

    将内存中的数据写入文件时,往往是有多少,就直接写入多少。当频繁的写入小批量数据,因反复系统调用导致性能较差;此外,...

  • JVM young GC频繁,内存泄漏

    young gc频繁,老年代占用线性上涨 young gc频繁因为产生系统使用log4j1版本在系统中大量使用de...

  • iOS 性能优化

    一、耗电优化 少用定时器 优化I/O操作尽量不要频繁写入小数据,最好批量一次性写入读写大量重要数据时,考虑用dis...

  • 性能优化 - 耗电优化

    尽可能减少CPU GPU的功耗 少用定时器 优化文件I/O操作尽量不要频繁写入小数据,最好批量一次性写入读写大量数...

  • 内存抖动

    造成内存抖动的原因。 频繁大量的创建对象,造成虚拟机频繁触发GC。 内存抖动有什么后果。 1.程序卡顿;2.可能回...

  • MongoDB适用场景

    更高的写入负载 默认情况下,MongoDB更侧重高数据写入性能,而非事务安全,MongoDB很适合业务系统中有大量...

网友评论

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

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