微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

xpages – XPage Java对象在SSJS中的回收

我已经阅读了关于Domino对象回收的建议:
What is the best way to recycle Domino objects in Java Beans

如果我有一个名为document的数据源,并且这个代码存在的函数调用了几次,那么最好的做法是什么?

var doc=document.getDocument(true)

并做后台文件的东西.

在我退出函数之前,我应该回收doc还是将我的后端文档转发到数据源中?

解决方法

这是一个很好的问题,因为这是“循环利用”原则的唯一例外之一(另外两个值得注意的例子是您不应该回收当前会话或数据库).对于数据源的后端文档进行回收是一个坏主意,因为JSF生命周期具有相同的句柄,您将从Domino中回收.数据源为我们照顾,所以不需要手动回收.另一方面,如果您获取特定项目(即doc.getFirstItem(“someFieldName”)或作为日期的项目值的句柄,则应该回收这些对象,而不是文档本身.

到目前为止,最重要的情况是回收Java和ssjs对象至关重要,因为每次前进到下一个条目或文档时,如果您跳过循环,则会泄漏句柄.在大多数其他情况下,回收仍然是可取的,但更接近于可选的,因为其他操作需要很长时间才能泄漏出来,造成问题.但是,如果您正在迭代一个非常大的视图,那么如果忘记回收,您可以轻松地在单个迭代中运行句柄.

然而,一个分开的想法:我很少看到一个情况,即在数据源的后端文档中获取句柄是最好的方法,所以我建议重新访问你的代码,以确保甚至有必要获取这个句柄开始.例如,而不是document.getDocument(true).getItemValueString(“someFieldName”),只需调用document.getValue(“someFieldName”)即可.返回的值应该是相同的,但是它会运行得更有效率,而你不会碰到后端文档,所以回收不是一个问题.而且每个项目访问的打字都较少,这肯定会随着时间的推移而增加.同样,代替document.getDocument(true).replaceItemValue(“someFieldName”,“newValue”),替换document.setValue(“someFieldName”,“newValue”).

原文地址:https://www.jb51.cc/java/121591.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐