gpt4 book ai didi

java - 丢失后回收多米诺骨牌对象

转载 作者:行者123 更新时间:2023-12-03 18:20:46 24 4
gpt4 key购买 nike

在阅读了许多我已经知道的博客和帖子之后,我必须在我的类和方法结束之前回收 domino 对象,以免使我的堆重载。但是细节决定成败,我忘记了很多次回收一些对象,所以它们在堆上还活着。

所以我的问题是,是否可以在不重启服务器的情况下从堆中收集和回收它们?

最佳答案

几点:

  1. 回收 Domino 对象与堆重载无关。回收是因为处理了 Java 到底层 C++ Domino 对象之间的映射。 Java 变量通过正常的垃圾收集回收,因此无论您是否回收,Java 堆都不会受到影响。剩下的是 C++ 对象的句柄,并且只有这么多。这就是为什么您收到的错误不是关于 Java 内存的错误,而是类似于“PANIC:LookupHandle:句柄超出范围”之类的错误。
  2. 指向同一底层对象的多个 Java 变量重复使用同一句柄。这就是为什么如果您回收一个(到一个)Domino 对象但仍在别处使用该 Domino 对象,您可能会遇到问题。
  3. 在每个 XPage 请求(页面加载、部分刷新等)结束时,Session、SessionAsSigner 等将被回收。回收过程也回收所有后代。因此,除非任何 XPage 卡在无限循环中,否则任何地方都不可能有任何对象仍然存在。
  4. 如前所述,回收对象会回收所有后代。但是像 DateTimes 和 Names 这样的对象是 Session 的子对象,而不是例如查看条目。关于所涉及的问题以及如何解决,有各种帖子。

这就是为什么除了循环之外没有理由担心回收,在循环中不仅回收被迭代的对象很重要,而且回收在该循环内创建的任何日期时间或名称也很重要。

关于java - 丢失后回收多米诺骨牌对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28827174/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com