为什么在运行应用程序时它始终在Android Logcat中显示GC_CONCURRENT FREED和GC_CONCURRENT ALLOCATE?

G M*_*esh 11 android garbage-collection memory-leaks memory-management android-logcat

我想知道为什么每次运行任何应用程序时都会显示以下消息.

12-11 17:18:37.141: D/dalvikvm(3155): GC_CONCURRENT freed 485K, 9% free 6696K/7303K, paused 9ms+335ms

paused 9ms+335ms由于这个暂停,我应该播放的音频丢失了,因为根据我的代码,它每次接收音频数据,40ms所以这里它暂停,9ms+335ms因为10 times数据丢失

我知道它执行某种垃圾收集但我的问题是为什么它经常出现在logcat中.

谢谢你的帮助!!!!!!

Moh*_*lah 15

Java使用垃圾收集来防止您通过删除任何类不再引用但无法从您的代码访问的对象而导致内存不足.

如果你有太多这些对象,你会得到很多GC调用,这可能在某些时候影响你的性能.另一方面,拥有始终引用的对象可能会阻止GC被调用(内存泄漏)并且您的内存可能会填满并且您获得了一个OutOfMemoryException.

你的目标不是消除GC,但减少他们尽可能在对延迟敏感并在UI线程上运行的方法(如onDraw(),getView()......为EG).