繁体   English   中英

HashMap导致的内存泄漏

[英]Memory Leakage due to HashMap

由于我的代码中有HashMap ,我面临内存泄漏。 当我第一次登录到应用程序时,这个HashMap填充,我使用这个Map来缓存一些数据。

我在我的应用程序中使用了这个缓存的数据。

在应用程序中没有运行任何内容后,它的大小会不断增长。 只有在自动调用垃圾收集器或我调用它时才会减小大小。

但之后又开始增加。 这肯定是内存泄漏,但是如何避免呢?

我的探查器还将ResultSet.getString()Statement.execute()为热点内存分配。 这些方法用于填充此缓存。

由于这些方法,内存是否泄漏? 我在finally块中关闭了DB Connection。

为什么还在向我展示这些方法?

正如上面的评论所解释的那样,这听起来不像是内存泄漏。

在Java应用程序中,JVM将创建对象并耗尽内存。 随着时间的推移,一些对象将超出范围(有资格进行垃圾收集),但在下一次收集发生之前,它们仍然会在堆中“耗尽内存”。 这不是问题,这是java的工作方式。 当JVM决定它需要释放内存时,它将运行一个集合并且使用的内存应该丢弃。

你应该关心你所看到的吗? 我可以想到你应该有两个原因,一个你为什么不应该这样做。 如果你的垃圾收集释放了足够的内存以便应用程序继续运行,那么收集不会影响性能,而你是一个忙碌的人,有其他事情可做,那么我认为没有理由你应该关心。

但是,如果您担心自己不了解应用程序的详细工作方式,或者有理由担心“这么多的内存”会成为问题(您将来可能希望使用更多的数据来运行该应用程序,或者希望要在将来分配较少的堆来运行它,那么您可能想要调查。

如果在应用程序无所事事时内存已用完,那么我将专注于此。 当它什么都不做的时候它真的在做什么? 我打赌它正在做'某事'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM