我有一个节拍器应用程序,每当gc启动时,它在我的Nexus4上被延迟50‘s,尽管这一点几乎不明显,我想这在旧设备上更糟糕,有些人甚至注意到延迟了50’s。我认为我已经很好地优化了代码,gc每5-10秒就会启动一次。有人能提出一个“解决”这个问题的方法吗?用NDK编写的线程也会被gc暂停吗?
发布于 2013-07-31 05:10:27
如果您在一个单独的线程(即使它是一个Java线程)上处理0分配的声音,那么在另一个线程上启动的GC不会延迟它。
发布于 2013-07-30 23:12:12
如果可能的话,删除那些剩余的拨款。如果没有垃圾可收集,你就不必停下来收集垃圾。DDMS/ADT 分配跟踪器特性可以帮助您跟踪它们。(请注意,它现在可以在ADT插件中使用。)
纯原生线程不会被GC暂停,尽管它们仍然可以与GC争夺CPU。但是,如果线程调用VM,如果GC正在进行,它将暂停。
https://stackoverflow.com/questions/17945780
复制相似问题