0

我创建了一个非常简单的应用程序来请求项目、工具等等。我使用数据库来保存所有这些信息。我的申请管理器类使用一个 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*/);
}
4

1 回答 1

1

除非这已被确定为性能问题,否则我不会担心。Java 垃圾收集器在清理之后非常有效。

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

没有看到这个功能,以及它目前是如何实现的,很难建议如何改进它。然而,作为第一个想法,可以使用单例对象并让 getter 更新其值。尽管这可能会在其他地方引起问题,但如果假定对象在获取后不会更改。

于 2013-10-30T01:27:09.223 回答