android: channel is unrecoverably broken and will be disposed
记录一个关于内存泄漏的问题:
RT, 在停止播放音乐时,每过一段时间就会报
05-25 10:52:21.125 491-528/system_process E/InputDispatcher: channel '4a8b59f4 activity.MainActivity (server)' ~ Channel is unrecoverably broken and will be disposed!
05-25 10:52:21.125 491-528/system_process E/InputDispatcher: channel '4a9790c4 activity.ShoppingCartActivity (server)' ~ Channel is unrecoverably broken and will be disposed!
大概是在停止播放后的 10s 后左右,看log, 就这一条信息,别的什么都没有了,
后来发现问题出现在这里:
void PureToneGenerator::Main()
{
while (!is_exit_)
{
AudioData *pData = GenTone();
NotifyObservers(pData);
}
ALOGW("stop gen tone");
}
停止播放后,这个while 循环仍然有在执行,其中的GenTone
函数仍然会构造新的 AudioData
对象,导致了内存被撑爆了。
另外发现有一个很好的工具可以验证是否是由于内存泄漏导致的:
利用 android studio 自带的 Profilter 工具,如果在停止播放后,内存仍然在增长,就要注意了...
标签:disposed,will,broken,内存,JNI,泄露,unrecoverably,channel From: https://www.cnblogs.com/yongdaimi/p/17440326.html