簡體   English   中英

為什么在運行應用程序時,它始終在Android Logcat中始終顯示GC_CONCURRENT FREED和GC_CONCURRENT ALLOCATE?

[英]Why does it always shows GC_CONCURRENT FREED and GC_CONCURRENT ALLOCATE in Android Logcat while running a app?

我想知道為什么在運行任何應用程序時每次都會顯示以下消息。

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中。

感謝您的任何幫助!

Java使用垃圾回收通過刪除不再由任何類引用並且無法從代碼訪問的對象來防止內存不足。

如果這些對象太多,則會收到很多GC調用,這有時可能會影響性能。 另一方面,擁有始終被引用的Object可能會阻止GC的調用(內存泄漏),並且您的內存可能已滿,並且您收到OutOfMemoryException

您的目標不是消除GC,而是在對延遲敏感並且在UI線程上運行的方法(例如onDraw()getView()盡可能地減少它們。

這是Android的正常行為。 電話只是進行垃圾收集。 有關更多信息,請查看以下精彩的Google I / O視頻: Google I / O 2011:Android應用程序的內存管理

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM