NotesUserActivity類似乎有內存泄漏。當我從多個數據庫收集用戶活動信息並調用GetNthUserActivityEntry
方法時,內存使用量隨着每次調用而增加。Useractivity API類內存泄漏
我發現了一些對此問題的引用,但沒有解決方案。我認爲這個問題與此呼叫有關:
' Load the User name for the Activity Structure
UsernameOffset = puActivity + puActivityEntry.UserNameOffset
spUsername = Space(MAXUSERNAME)
Call CopyMemoryString(spUsername, UsernameOffset,Lenb(spUsername))
sUserName = Left(spUsername, Instr(spUsername, Chr(0)) - 1)
這是否糾正了泄漏?我查看了該類的代碼,雖然我沒有看到任何看起來可疑的東西,但我真的懷疑CopyMemoryString調用可能導致泄漏,因爲它沒有分配任何東西。它將從C API(UsernameOffset)分配的內存複製到由LotusScript運行時爲固定長度字符串(spUsername)分配的內存中。 –
我所做的更改:Lenb(spUsername)變成了strlenLP(UsernameOffset)。對於Lenb(spUsername),CopyMemoryString調用在所有情況下讀取256個字節,使用strlenLP(UsernameOffset)它會返回所有數據,直到\ 0的位置。這不是我懷疑的Copymemorystring本身,它是它被使用的方式。 –
今天在developerWorks上的Notes論壇上有一篇文章,宣佈該課程的新版本。請參閱此處:http://www-10.lotus.com/ldd/nd6forum.nsf/DateAllFlatWeb/BF9AECFB621CC3CD85257A1E000D317B?OpenDocument&ca=drs-fo –