假设我有一些Java代码设置如下
public void captureEvent(EventTrigger event) {
// Every few minutes or so, receive and parse an event from the upstream system
actOnEvent(event);
}
private void processEvent(EventTrigger event) {
DataObject dataObject = new DataObject();
dataObject.enrichFromEvent(event);
performSomeActivityBasedOn(dataObject);
}
在这种情况下,每次收到要处理的事件时,我都会在处理函数中创建一个新的DataObject。
随着时间的推移,这些对象会在内存中积累起来吗;存储器泄漏;还是Java会自动清理它们?
提前感谢您的意见。
这些对象会随着时间的推移在内存中累积吗,本质上会导致;存储器泄漏;还是Java会自动清理它们?
我们无从得知,您还没有解释performSomeActivityBasedOn
对传递的DataObject
对象做了什么。
- 如果该方法使对象引用超出范围,则每个传递的
DataObject
对象都将成为最终垃圾收集的候选对象 - 如果该方法保留引用,比如将每个接收到的引用添加到随时间维护的某个集合中,那么是的,随着更多对象的堆积,所有收集到的对象都将消耗越来越多的内存