Android App的用户数据不断增加:会议室数据库

问题描述

我最近学习了会议室数据库,并做了一个记事应用程序。该应用程序遵循MVVM设计模式,用户可以插入/删除/更新注释。

问题在于,每次插入/更新/删除时,应用程序的大小都会增加。

我检查了电话设置->应用程序-> SimpleNoteApp->存储,这些是我的观察结果。

  1. “应用大小”是固定的。 -15.16 mb
  2. 每个数据库操作的“用户数据”都在不断增加。
  3. 无论执行数据库操作多少次,“缓存”都不会增加
  4. 应用程序的总大小为1),2),3)

因此,这意味着如果我长时间使用该应用程序,即使我删除了该应用程序中的所有注释,“用户数据”也将是执行的每个数据库操作的累积总和。如果我错了,请纠正我。

Stack Overflow here上也有类似的问题,但不能解决问题。

至于编码部分,没有太多内容,因为这些是房间数据库的基本示例,我使用“ @Update @Insert @Delete”命令。

解决方法

因此,这意味着如果我长时间使用该应用程序,即使我删除了该应用程序中的所有注释,“用户数据”也将是执行的每个数据库操作的累积总和。如果我错了,请纠正我。

这是不正确的。删除行应或多或少从存储中删除数据。有一个write-ahead logging/rollback journal可能意味着它会暂时保留,因此,如果它对安全性很重要,则必须格外小心。这也可能导致短期内每个数据库的临时操作增加。但是,从长远来看,即使删除了数据库中的所有内容后,您的应用程序的存储容量仍在继续增长,这还是有问题的。

,

由于开发人员不负责收集垃圾,因此@MaximFirsoff在评论中建议这实际上是正常的

我进行了一个测试,该测试进行了100_000次插入和删除,并观察到存储的更改。

观察
在“ UserData”达到阈值限制并清除数据之后,将收集垃圾。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...