2012-12-01 18 views
4

当Android应用程序(JNI + Java)进入后台时,基于Elixir监视器,无需任何明显原因就需要40-80%的CPU。 Logcat没有任何实际活动的迹象,DDMS方法分析器没有找到任何方法调用。应用程序在不做任何事情的情况下在后台使用CPU

实际上,几分钟后OS(ISC)至少有时似乎自动修复它:重新启动应用程序进程,然后如预期的那样 - 占用CPU和内存的0%。当我再次启动应用程序并按回家后台时,会发生相同的CPU占用率。

任何想法可以调查什么?

+0

提供导致此问题的代码。 –

+0

好吧,如果你的程序使用了所有的cpus,请调查你的代码。将日志输出放在任何地方或使用调试器。不可见并不意味着线程神奇停止。您的活动中不再需要“onSomeUiEvent”电话。服务,广播接收机和内容提供商也将继续。 – zapl

+0

我的问题是找到导致问题的代码。这是一个非平凡的项目,包含服务,接收器,NDK/C++中的大量代码等。令人惊讶的是,方法分析器在进程查看器显示它时不显示任何事件。也许是因为这是NDK方面? – JaakL

回答

2

所以我的结论是:1,如果探查器不显示的方法调用,那么很有可能就意味着CPU在NDK侧浪费,2基于GDB的分析应该有使用,大概就像that

相关问题