首先,它是一个巨大的应用程序,问题涉及很多行,因此我无法真正附加任何代码。
在主要包含清除和重新添加元素到集合中的更改之后,应用程序的摆动GUI冻结。冻结不会在执行添加的代码时发生,而是在一段时间后发生。奇怪的是没有线程被挂起。
我的问题是无限循环是否是对此问题的唯一解释。在我看来,情况并非如此,因为添加的代码可以毫无问题地完成。
可能存在一些不同步的集合访问问题,但我认为这不会导致这种情况。由于没有线程被挂起,因此看起来也不像我们正在处理来自同步问题的死锁。
最佳答案
庞大的应用程序+操纵收集->垃圾收集器启动了?
此处的一些相关阅读:
side effect for increasing maxpermsize and max heap size
以及有关GC调优的Oracle文章:
http://www.oracle.com/technetwork/java/gc-tuning-5-138395.html