英文:
Why not initializing a TcpSyslogMessageSender before every periodic sendMessage()?
问题
我在一个简单的应用程序中使用CloudBees Syslog Java Client来周期性地向服务器发送Syslog消息。一切都正常,但我想知道 - 如果在每个循环中初始化TcpSyslogMessageSender类,那么在经过10次迭代后,它将停止发送新消息而不会引发任何异常。我可以很容易地将其更改,并将对象初始化移动到调用类的构造函数中,但我想理解其中的原因。从我的角度来看,我在每次迭代时都初始化了一个全新的对象。垃圾收集器应该会删除旧对象并释放已使用的网络资源。但也许情况没有那么简单。
while(true){
TcpSyslogMessageSender messageSender = new TcpSyslogMessageSender();
messageSender.setDefaultMessageHostname(...);
...
messageSender.sendMessage(msg);
}
希望能够了解这个问题!
祝好,
cmax
英文:
I am using CloudBees Syslog Java Client in a simple application to send Syslog messages periodically to an server. All works fine but I wondered - if the TcpSyslogMessageSender-Class is initialized on every loop, it will stop sending new messages after 10 iterations without any exception. I can easily change this and move the object initialization to the constructor of the calling class, but I want to understand why this is. From my point of view I am initializing a clean new object on every iteration. The Garbage Collection should remove the older objects and free the used network resources. But maybe it is not that easy.
while(true){
TcpSyslogMessageSender messageSender = new TcpSyslogMessageSender();
messageSender.setDefaultMessageHostname(...);
...
messageSender.sendMessage(msg);
}
Would like to learn about it!
Cheers,
cmax
答案1
得分: 0
我正在回答自己:我了解到TcpSyslogMessageSender有一个close方法,该方法实际上会关闭已使用的套接字。似乎不可能从一个Java实例中并行打开超过10个套接字。不幸的是,关闭调用不是提供的代码示例的一部分。现在,对于多次初始化和重新初始化TcpSyslogMessageSender来说绝对没有问题。希望有人会发现这对他们有帮助。
英文:
I am answering to myself: I learned that TcpSyslogMessageSender has a close-method which actually closes the used socket. It seems that it was not possible to open more that 10 sockets from one Java-instance in parallel. Unfortunately, the close-call was not part of the given code example. Now, it is absolutely no problem to initialize and reinitialize the TcpSyslogMessageSender for many times. Hope someone will find this helpful.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论