gpt4 book ai didi

android - 我如何强制 Android 垃圾收集旧套接字信息?

转载 作者:搜寻专家 更新时间:2023-11-01 07:40:32 25 4
gpt4 key购买 nike

我有一个项目,我正在使用大量通过 JNI 访问的现有 C++ 代码开发一个 Android 应用程序,它可以打开和关闭套接字。

即使此 C++ 正确处理了它打开的套接字的关闭,Android 操作系统或 JVM 似乎仍保留对正在使用的套接字/端口的引用,直到下一次 GC 调用。

如果我们停止应用程序并在下一次 GC 调用之前再次启动它,应用程序将无法在同一个套接字/端口上创建连接。如果我们等待操作系统调用 GC,然后然后重新启动应用程序,它会成功创建连接。

有没有办法从 Android/JVM 的角度手动释放套接字?也许是套接字类实用程序?手动调用 GC?

最佳答案

操作系统的 TCP/IP 协议(protocol)堆栈在应用程序关闭 TCP 端口后保留它们两分钟。因此,如果您有一个已接受连接的监听套接字,该端口将在几分钟内保持不可用状态。

在将套接字绑定(bind)到监听地址之前,使用选项=SO_REUSEADDR 和值为 1 在套接字上调用 setsockopt()。

关于android - 我如何强制 Android 垃圾收集旧套接字信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4363056/

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