熟悉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对象间的包含关系
在我们书
写代码的
时候,也
需要注意
回避Ja
va的垃
圾回收机
制。比如
:
规则一: 每一个D omin o对象都 需要被释 放。每一 个Dom ino对 象类都有 一个方法 叫rec ycle (),我 们可以通 过显示调 用对象的 recy cle对 象以释放 我们不再 需要的D omin o对象。 规则二: 每一个D omin o对象在 释放时, 都会自动 释放他所 包含的对 象。比如 我们通过 Docu ment 获取的I tem和 Rich Text Item 对象,会 随着Do cume nt的释 放而释放 。而Se ssio n对象释 放时,我 们获得的 Data base 、Vie w、Do cume nt对象 都会被自 动释放。 因此: 子规则一 :当我们 还需要使 用某个子 对象时, 我们必须 注意保证 其父容器 对象没有 超出其作 用域。 子规则二 :当我们 需要访问 某容器的 少数子对 象时,我 们可以通 过释放容 器对象隐 性释放子 对象;当 我们需要 在循环中 访问很多 个子对象 或者容器 类需要长 期存在时 ,我们需 要在使用 完毕后显 式的释放 每一个子 对象。
规则三:尽快释放不需再使用的对象。 规则四: Date Time 和Nam e对象直 接包含在 Sess ion对 象中,因 此我们在 使用完毕 后必须立 即主动释 放。对于 Data Time ,我们可 以调用V iewE ntry 、Doc umen t等对象 的set Pref erJa vaDa tes( )方法来 要求返回 Java 的Dat a对象, 以替代D omin o的Da tati me对象 。
例一:
不合适的写法:
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;