为什么不在每个定期的sendMessage()之前初始化TcpSyslogMessageSender?

我在一个简单的应用程序中使用CloudBees Syslog Java客户端将Syslog消息定期发送到服务器。一切正常,但我想知道-如果在每个循环上初始化TcpSyslogMessageSender-Class,它将在10次迭代后停止发送新消息,而没有任何异常。我可以轻松地更改它,并将对象初始化移到调用类的构造函数中,但是我想了解为什么会这样。从我的角度来看,我在每次迭代时都要初始化一个干净的新对象。垃圾收集应删除较旧的对象并释放使用的网络资源。但是也许这并不容易。 :)

while(true){
            TcpSyslogMessageSender messageSender = new TcpSyslogMessageSender();
            messageSender.setDefaultMessageHostname(...);
            ...
            messageSender.sendMessage(msg);
}

想了解一下!

干杯

cmax

zhaochunlang1 回答:为什么不在每个定期的sendMessage()之前初始化TcpSyslogMessageSender?

我对自己说:我了解到TcpSyslogMessageSender具有一个关闭方法,该方法实际上关闭了使用的套接字。似乎不可能从一个Java实例并行打开10个以上的套接字。不幸的是,关闭调用不是给定代码示例的一部分。现在,多次初始化和重新初始化TcpSyslogMessageSender绝对没有问题。希望有人会对此有所帮助。

本文链接:https://www.f2er.com/1407313.html

大家都在问