在我们的一个 java 应用程序中,我们得到了
OutOfMemoryError:GC Overhead limit exceeded.
我们在某些地方使用了 HashMaps 来存储一些数据。从日志中我们可以确定它在同一个地方复制。
我想问一下垃圾收集器是否花费更多时间来清理哈希图?
查看代码后(我不能在这里分享),我发现有一个像这样创建的 Hashmap
Hashmap topo = new HashMap();
但是这个哈希图从未被使用过。这是我的应用程序中的一种内存泄漏吗?
如果这Hashmap
是在一个正在做一些处理的方法中创建的,并且它没有在其他地方使用,那么这个方法也被访问我的多个线程说 20 。那么在这种情况下,它会影响,创建如上所述的 Hashmap,垃圾收集器花费更多时间在恢复堆并抛出 OOME。
如果您需要更多详细信息,请告诉我。