gpt4 book ai didi

android - GREF 在多线程服务 (aidl) 中增加/减少 - 这是什么意思?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:13:09 24 4
gpt4 key购买 nike

我有一个 android Activity 和一个使用 aidl 实现的服务。像冠军一样工作,我有一个回调设置来将一些线程通知传递回 UI,这似乎工作正常,除了很多

GREF 增加到 101、201,301,401、501.. 等,而 GREF 减少了。我在网上做了一些搜索,发现它必须与全局引用文献有关。

08-17 02:31:19.735: DEBUG/dalvikvm(2558): GREF has increased to 301
...
08-17 02:31:25.823: DEBUG/dalvikvm(2558): GREF has increased to 401
...
08-17 02:31:36.772: DEBUG/dalvikvm(2558): GREF has increased to 501
...
08-17 02:31:42.694: DEBUG/dalvikvm(2558): GREF has increased to 601
...
08-17 02:31:48.695: DEBUG/dalvikvm(2558): GREF has increased to 701
...
08-17 02:31:59.883: DEBUG/dalvikvm(2558): GREF has decreased to 599
08-17 02:31:59.912: DEBUG/dalvikvm(2558): GREF has decreased to 499
08-17 02:31:59.912: DEBUG/dalvikvm(2558): GREF has decreased to 399
08-17 02:31:59.912: DEBUG/dalvikvm(2558): GREF has decreased to 299
08-17 02:31:59.912: DEBUG/dalvikvm(2558): GREF has decreased to 199

我做了一些搜索,发现关于这个的大部分评论都相当陈旧。我担心的是我是否正确地实现了我的客户端/服务,并且想知道如何追踪导致 GREF 增加的原因。欢迎任何想法/建议。谢谢!

基本程序流程

Client -> Creates Callback
Client -> Starts Service
Service -> Inits & Starts CountDownTimer
Service.CountDownTimer.onFinish() -> DownloadAndParse()
DownloadAndParse() -> initialize new saxRequest(), new Handler for this request.
Service.Handler->beginBroadcast()
Client.CallbackStub -> updateUI()
Client.CallbackStub -> service.startCountDownTimer()

希望这是有道理的。我会在这里发布代码,但是有这么多不同的文件。我想我会尝试把流程放起来看看是否有任何明显的东西......我唯一能看到的可能是重新使用 saxRequest() 而不是创建一个新实例......我现在实际上会尝试,但我真的很想知道 GREF 和垃圾收集的影响。

最佳答案

这些是 JNI 全局引用。如果您不编写 native 代码,则无法直接控制它们。启用 CheckJNI 时会显示日志消息,默认情况下工程构建和模拟器处于启用状态。

这些消息只是意味着 native 代码告诉 VM 不允许丢弃某些对象。本质上,全局引用是 native 代码向 GC 的根集添加引用的一种方式。假设 native 代码编写正确,当 native 代码不再需要它们时,全局引用将被清除。

唯一值得关注的是全局引用计数是否继续攀升,因为这表明存在全局引用泄漏。由于 VM 无法释放对象,全局引用泄漏最终会导致 VM 耗尽内存。为帮助识别此类问题,在启用 CheckJNI 时对全局引用的数量设置了上限(当前限制为 2000)。

关于android - GREF 在多线程服务 (aidl) 中增加/减少 - 这是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3499061/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com