当我运行某些代理时,我会在其中回收我的对象,我有时会在运行代理时收到此消息:
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)
如何找出此内存已满的代理程序或对象? 我怎样才能再次清空内存..
答案 0 :(得分:1)
在Eclipse中,您可以在抛出异常时停止调试:
答案 1 :(得分:1)
没有办法“再次清空内存”,如果没有彻底审查所有代码,这里的任何人都无法帮助您找到泄漏源。您可能需要查看此answer to an older question here on StackOverflow,了解有关如何尝试和追踪泄漏的建议。
当然,在Domino代理中,最常见的问题是非回收对象,所以尽管你说你正在回收,但我会寻找你可能缺少recycle()调用的任何可能的分支。或者,我考虑使用OpenNTF Domino API而不是标准API,因为它不需要进行recycle()调用。