管理Java中的Notes、Domino后台对象

9 篇文章 0 订阅
熟悉Do mino /Not es开发 的朋友应 该都知道 Note s.ja r。No tes. jar为 我们提供 了一整套 的Jav a API, 帮助我们 访问、操 纵Dom ino/ Note s后台中 的对象。 包括Da taba se,V iew, Docu ment ,ACL 等等。J ava程 序员可以 很方便的 在Age nt,X Page s或者独 立Jav a程序中 使用这些 API来 访问后台 对象,实 现新功能 或者和第 三方系统 进行整合 。不过, 在使用这 些对象的 过程中, 我们需要 注意管理 好这些对 象的生存 周期,否 则,这些 对象将在 不知不觉 中,占用 大量的后 台资源。

由于Ja va天生 带有的垃 圾回收机 制,Ja va程序 员往往对 Java 对象的回 收并不需 要过多关 心。当我 们不需要 某个对象 之后,我 们只需要 把对应的 对象应用 设置为N ULL, 之后Ja va的垃 圾回收机 制会在” 适当的“ 时候回收 对象所占 用的内存 。不过, 这一机制 对Dom ino后 台对象并 不适用, 除了内存 空间之外 ,Dom ino后 台对象还 占用了相 应的后台 资源,J ava的 垃圾回收 将无法知 道何时” 必须“回 收这些资 源,因此 其回收是 不及时的 。我们无 法依赖J ava的 垃圾回收 来有效管 理后台资 源。对于 Domi no Java 对象的管 理,我们 有一些必 须要注意 的原则。

图一 Domino对象间的包含关系
图像

  • 规则一:每一个Domino对象都需要被释放。每一个Domino对象类都有一个方法叫recycle(),我们可以通过显示调用对象的recycle对象以释放我们不再需要的Domino对象。
  • 规则二:每一个Domino对象在释放时,都会自动释放他所包含的对象。比如我们通过Document获取的Item和RichTextItem对象,会随着Document的释放而释放。而Session对象释放时,我们获得的Database、View、Document对象都会被自动释放。因此:
    • 子规则一:当我们还需要使用某个子对象时,我们必须注意保证其父容器对象没有超出其作用域。
    • 子规则二:当我们需要访问某容器的少数子对象时,我们可以通过释放容器对象隐性释放子对象;当我们需要在循环中访问很多个子对象或者容器类需要长期存在时,我们需要在使用完毕后显式的释放每一个子对象。
  • 规则三:尽快释放不需再使用的对象。
  • 规则四:DateTime和Name对象直接包含在Session对象中,因此我们在使用完毕后必须立即主动释放。对于DataTime,我们可以调用ViewEntry、Document等对象的setPreferJavaDates()方法来要求返回Java的Data对象,以替代Domino的Datatime对象

在我们书 写代码的 时候,也 需要注意 回避Ja va的垃 圾回收机 制。比如

例一:
不合适的写法:
document = null;
正确的写法:
document.recycle();

例二:
不合适的写法:
view =vie wNav igat or.g etNe xt(v iew) ;
正确的写法:
tmpView = view Navi gato r.ge tNex t(vi ew);
view.recycle();
view = tmpView;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值