keepAlive是socket连接在没有数据交换时用来探测连接是否存活的一种心跳机制。当然也可以自己实现心跳机制而不使用自带的功能。
当由于各种问题(在没有数据交换的情况下由于网络问题或者自身机器问题)导致socket没有正常关闭时,socket会一直占用句柄,这样导致了该释放的资源没及时释放。
java 自带的api没有提供设置心跳的具体参数:
1、发送心跳的时间间隔;
2、当未受到心跳的ack消息时再次发送心跳的次数与时间间隔;
如果是在linux环境下可通过修改操作系统的配置文件进行设置。