我在java web应用程序中使用Spring + Hibernate。我在网上看到spring和hibernate将使用比平时更多的内存。我的内存经常耗尽。所以我尝试使用 jvisualvm 来分析我的tomcat。当我在内存中看到,对象不断添加(不替换现有对象)。
例如:如果我正在加载产品对象列表(列表中有1000个对象),那么将在堆内存中添加1000个产品对象。如果我再次刷新数据网格,它会在堆内存中添加1000个对象,就像它一直在增加(参见图像)。有没有办法替换堆内存中的现有对象而不是继续添加?
答案 0 :(得分:3)
不,您无法替换堆上的对象。你可以做的是删除对该对象的所有引用并将其从列表中删除,Java的垃圾收集器将销毁该对象。
请参阅垃圾收集的此链接:http://javabook.compuware.com/content/memory/how-garbage-collection-works.aspx