问题描述
我在一个简单的应用程序中使用CloudBees Syslog Java客户端将Syslog消息定期发送到服务器。一切正常,但我想知道-如果在每个循环上初始化TcpsyslogMessageSender-Class,它将在10次迭代后停止发送新消息,而没有任何异常。我可以轻松地更改它,并将对象初始化移到调用类的构造函数中,但是我想了解为什么会这样。从我的角度来看,我在每次迭代时都要初始化一个干净的新对象。垃圾收集应删除较旧的对象并释放使用的网络资源。但是也许这并不容易。 :)
while(true){
TcpsyslogMessageSender messageSender = new TcpsyslogMessageSender();
messageSender.setDefaultMessageHostname(...);
...
messageSender.sendMessage(msg);
}
想了解一下!
干杯
cmax
解决方法
我对自己说:我了解到TcpSyslogMessageSender具有一个关闭方法,该方法实际上关闭了使用的套接字。似乎不可能从一个Java实例并行打开10个以上的套接字。不幸的是,关闭调用不是给定代码示例的一部分。现在,多次初始化和重新初始化TcpSyslogMessageSender绝对没有问题。希望有人会对此有所帮助。