2011-09-08 34 views
1

我有一个Android应用程序,使用JSON与Jersey web服务进行通信。接收到的数据存储在Android设备上的SQLite数据库中。Android应用程序暂停 - 缓慢的垃圾回收或SQLite性能问题?

根据DDMS,堆大小约为6MB,大约2MB可用。但是,在收到一定数量的数据后,应用程序会'暂停'(不会从Web服务请求新数据)。然后我看到垃圾收集被触发,应用程序继续。手动触发System.gc()似乎没有效果,甚至会降低性能。

我的问题是:垃圾回收是暂停的原因,还是写入Android设备上的SQLite数据库比较慢?

更新:Android版是2.3.3

回答

1

写SQLite数据库是缓慢的,因为文件I/O是缓慢的,因为闪光灯很慢。更具体地说,SQLite事务处理速度很慢,因为事务将数据写入闪存,并且闪存很慢。如果您正在快速连续执行多个SQL操作,请考虑将它们包装在自己的事务中。

除此之外,使用Traceview来确定你的时间花在哪里。

+0

优秀的答案!我将修改代码以使用事务,之后我会看看traceview。 –