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

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

12-11 17:18:37.141:D / dalvikvm(3155):GC_CONCURRENT释放485K,9%免费6696K / 7303K,暂停9ms 335ms

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

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

感谢任何帮助!!!!!!

解决方法

Java使用垃圾收集功能,以防止您通过删除不再被任何类引用且不能从代码访问的对象而脱离内存.

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

您的目标不是消除GC,而是在延迟敏感并在UI线程上运行(如onDraw(),getView(),…)的方法中尽可能多地减少它们.

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...