我们的一个程序有时会OutOfMemory
在一个用户的机器上出错,但在我测试它时当然不会。我只是用 JProfiler 运行它(在 10 天评估许可证上,因为我以前从未使用过它),并过滤我们的代码前缀,总大小和实例数的最大块是特定简单类的 8000+ 个实例.
我单击了 JProfiler 上的“垃圾收集”按钮,我们其他类的大多数实例都消失了,但这些特定的实例没有。我再次运行测试,仍然在同一个实例中,它创建了 4000 多个该类的实例,但是当我单击“垃圾收集”时,这些实例消失了,留下了 8000 多个原始实例。
这些实例确实在各个阶段陷入了各种集合中。我假设它们不是垃圾收集的事实一定意味着某些东西正在持有对其中一个集合的引用,因此它持有对对象的引用。
有什么建议可以让我弄清楚参考资料是什么?我正在寻找有关在代码中寻找什么的建议,以及在 JProfiler 中找到它的方法(如果有)。