我必须在运行时从代码中找到可用的内部内存,因为当我将内部手机内存降低到100K以下时,由于磁盘空间不足,sqlite操作会在每个数据库操作上抛出SQLiteDiskIOException
任何想法?
clahav
答案 0 :(得分:3)
在这种情况下,使用嵌入式数据库似乎有点过分,因为RAM数量较少,因此环境较弱。我宁愿选择像
这样的流行层您将通过JDBC(事务,SQL)丢失一些功能,但可以降低内存消耗。
答案 1 :(得分:1)
调用Runtime.getRuntime().freeMemory()
可以估算可用内存量。但是,它不是一个特别有用的措施,因为您很有可能分配比报告的值更多的内存。当您尝试分配比当前空闲内存更多的内存时,JVM将自动运行GC以尝试回收足够的空间进行分配,这通常会成功。
>>通过调用System.gc()
来“请立即”运行GC,但从性能角度来看,这通常是糟糕的主意。如果您只是让JVM在需要时运行GC,那么GC最有效(就每个字节回收的时间而言)。运行GC的唯一情况是,如果您知道在特定点有备用CPU周期并且想要缓解GC暂停。
在您的特定情况下,我不确定知道有多少可用内存有什么优势。你为什么不尝试sqlite操作并捕获/处理异常?或者增加堆大小?或者追踪什么是泄漏内存或低效使用它?
答案 2 :(得分:0)
Runtime rt=Runtime.getRuntime();
rt.freeMemory()
调用System.gc()可能会增加可用的可用内存