我有一个名为
问题出现在我想要从
我已经尝试过较少的记录数量:1和300。这会导致更少的垃圾收集消息(分别为1和7),以及更快的活动加载速度(分别为1和6秒),但可用内存的差异相当微小。
似乎缓慢的活动加载时间是由GC开销引起的。我的问题是:为什么Dalvik VM会进行大量的GC呢?即使有3000条记录,我相信它只会占用不到500 KB的内存。如果不是GC开销的问题,还有哪些可能导致这种缓慢的活动加载呢?
顺便说一句,我使用内置类ActivityManager.MemoryInfo提供的信息记录了内存可用性。
BrowseActivity
的Android活动,它从数据库中加载大约3000条记录(每条记录约100字节)到内存中,并在ListView
中显示它们。在AVD中加载需要3到6秒,这很好。问题出现在我想要从
BrowseActivity
中启动一个新的活动时。即使只是打开最琐碎的活动,也需要大约30秒。Dalvik VM似乎因未知原因执行了大量垃圾回收。请查看下面的logcat
输出。01-30 02:06:27.025: D/dalvikvm(553): GC_FOR_MALLOC freed 3889 objects / 221200 bytes in 45ms
01-30 02:06:28.234: D/dalvikvm(553): GC_FOR_MALLOC freed 2784 objects / 76864 bytes in 48ms
01-30 02:06:29.614: D/dalvikvm(553): GC_FOR_MALLOC freed 2665 objects / 70088 bytes in 64ms
01-30 02:06:30.915: D/BrowseActivity(553): Low memory status: false
01-30 02:06:30.915: D/BrowseActivity(553): Low memory threshold (KB): 16384
01-30 02:06:30.915: D/BrowseActivity(553): Memory available (KB): 451348
01-30 02:06:31.095: D/dalvikvm(553): GC_EXTERNAL_ALLOC freed 2711 objects / 85904 bytes in 62ms
01-30 02:06:49.705: D/dalvikvm(553): GC_FOR_MALLOC freed 8894 objects / 600272 bytes in 89ms
01-30 02:06:50.414: D/dalvikvm(553): GC_FOR_MALLOC freed 10757 objects / 730720 bytes in 68ms
01-30 02:06:51.105: D/dalvikvm(553): GC_FOR_MALLOC freed 10251 objects / 694864 bytes in 67ms
... and about 30 more garbage collection messages
我已经尝试过较少的记录数量:1和300。这会导致更少的垃圾收集消息(分别为1和7),以及更快的活动加载速度(分别为1和6秒),但可用内存的差异相当微小。
01-30 02:03:35.295: D/BrowseActivity(491): Low memory status: false
01-30 02:03:35.295: D/BrowseActivity(491): Low memory threshold (KB): 16384
01-30 02:03:35.295: D/BrowseActivity(491): Memory available (KB): 453184
01-30 02:04:53.494: D/BrowseActivity(522): Low memory status: false
01-30 02:04:53.494: D/BrowseActivity(522): Low memory threshold (KB): 16384
01-30 02:04:53.494: D/BrowseActivity(522): Memory available (KB): 453152
似乎缓慢的活动加载时间是由GC开销引起的。我的问题是:为什么Dalvik VM会进行大量的GC呢?即使有3000条记录,我相信它只会占用不到500 KB的内存。如果不是GC开销的问题,还有哪些可能导致这种缓慢的活动加载呢?
顺便说一句,我使用内置类ActivityManager.MemoryInfo提供的信息记录了内存可用性。