[英]Java Object Creation Inside Infinite Loop
我正在尝试编写守护进程。 以下是我的示例代码片段。
public void listener() {
MyObject obj = null;
while(true) {
obj = new MyObject();
obj.process();
}
}
还是我应该这样创造
public void listener() {
MyObject obj = new MyObject();
while(true) {
obj.process();
}
}
process()
方法将进行数据库select
并将其insert into
表中,连接Web服务并获取响应消息并将该消息发送给用户。
哪一种是正确的方法?
这完全取决于MyObject
功能以及process(()
的实现方式。作为一般概念,如果MyObject
是无状态的,并且一个process
调用不会留下任何可能干扰后续调用的剩余,您可以优化并使用单个实例,而不是在每次迭代中都用一个新实例来破坏垃圾收集器。
在第一个示例中,创建obj
直到堆大小已满,并且堆大小已满时JVM抛出java.lang.OutOfMemoryError
。
在第二个示例中,您有一个对象,并且始终调用process()方法。
对于新生的好问题。 我很感激
第一个,这将为循环的每次迭代创建一个新的Object o。 垃圾收集器将经常清洁。
第二个,因此它将一直可用。 如果您想一直重复使用对象,那就去找吧。
由于这是无限的过程,因此只需选择第二种方法即可重用对象。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.