在getter中创建新对象,确保它不在VM中

时间:2013-10-30 01:17:39

标签: java garbage-collection finalize

我创建了一个非常简单的应用程序来请求项目,工具和什么不是。我使用数据库来保存所有这些信息。我的请购经理类使用getter,它使用数据库中的信息返回请购单的新实例。这个新对象会永远存在于堆栈中吗?我怎么强迫它收集?我怎样才能做到这一点,比如如何在不创建新对象的情况下编写函数?

public static Requisition getRequisition(int id) {
  //logic for getting the correct id and so forth
  return new Requisition(id, /*logic for name*/, /*logic for price and other fields*/);
}

1 个答案:

答案 0 :(得分:1)

除非已将此视为性能问题,否则我不会担心。 java垃圾收集器在你清理后非常有效。

java中的对象永远不会存储在堆栈中,只能存储在堆中。 引用可以放在堆栈上,当它们超出范围时它们就会消失。 在最后一次引用它之后,创建的对象将在第一个集合过程中被垃圾收集。

如果没有看到这个功能,以及当前如何实现它,很难建议如何改进它。然而,作为第一个想法,可以使用单个对象并让getter更新其值。虽然这可能会导致其他地方出现问题,但如果假定对象在获取后没有改变。