Dfo*_*owj 2 sockets android garbage-collection android-ndk
我有一个项目,我正在使用通过JNI访问的许多现有C++代码开发Android应用程序,这些代码可以打开和关闭套接字.
即使这个C++正确地处理它打开的套接字的关闭,似乎Android操作系统或JVM仍然保留对下一次GC调用之前使用的那些套接字/端口的引用.
如果我们在下一次GC调用之前停止应用程序并再次启动它会发生什么,该应用程序无法在同一个套接字/端口上创建连接.如果我们等待操作系统调用GC 然后重新启动应用程序,它会成功创建连接.
有没有办法从Android的/ JVM的角度手动释放套接字?也许是套接字类实用程序?手动调用GC?
应用程序关闭后,操作系统的TCP/IP协议栈会保留TCP端口两分钟.因此,如果您有一个已接受连接的侦听套接字,该端口将在几分钟内保持不可用状态.
绑定之前套接字监听地址,调用setsockopt的()的选项= SO_REUSEADDR和值为1的插槽上.
| 归档时间: |
|
| 查看次数: |
1694 次 |
| 最近记录: |