运行代理时内存不足

时间:2017-07-13 14:46:33

标签: java lotus-notes

当我运行某些代理时,我会在其中回收我的对象,我有时会在运行代理时收到此消息:

java.lang.OutOfMemoryError: Java heap space
    at java.util.Arrays.copyOf(Arrays.java:3580)
    at java.io.ByteArrayOutputStream.grow(ByteArrayOutputStream.java:129)
    at java.io.ByteArrayOutputStream.ensureCapacity(ByteArrayOutputStream.java:104)
    at java.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java:164)
    at lotus.domino.ClassHashtable.explodeArchive(Unknown Source)
    at lotus.domino.ClassHashtable.addAttachment(Unknown Source)
    at lotus.domino.AgentLoader.addAttachment(Unknown Source)

如何找出此内存已满的代理程序或对象? 我怎样才能再次清空内存..

2 个答案:

答案 0 :(得分:1)

在Eclipse中,您可以在抛出异常时停止调试:

Break when exception is thrown

答案 1 :(得分:1)

没有办法“再次清空内存”,如果没有彻底审查所有代码,这里的任何人都无法帮助您找到泄漏源。您可能需要查看此answer to an older question here on StackOverflow,了解有关如何尝试和追踪泄漏的建议。

当然,在Domino代理中,最常见的问题是非回收对象,所以尽管你说你正在回收,但我会寻找你可能缺少recycle()调用的任何可能的分支。或者,我考虑使用OpenNTF Domino API而不是标准API,因为它不需要进行recycle()调用。