Java - 替换堆内存中的现有对象

标签 java heap-memory jvisualvm

我在我的 Java Web 应用程序中使用 Spring + Hibernate。我在网上看到spring和hibernate会比平时占用更多的内存。我经常用完内存。所以我尝试使用 jvisualvm 来分析我的 tomcat。当我在内存中看到时,对象不断添加(而不是替换现有对象)。

例如:如果我正在加载一个产品对象列表(列表中有 1000 个对象),那么将在堆内存中添加 1000 个产品对象。如果我再次刷新数据网格,它会在堆内存中添加 1000 个对象,就像它一直在增加一样(参见图像)。有没有办法替换堆内存中的现有对象而不是继续添加?

heap memory keep on adding prmaster objects

最佳答案

不,您不能替换 上的对象。您可以做的是删除对该对象的所有引用并将其从列表中删除,Java 的垃圾收集器 将销毁该对象。

请参阅有关垃圾收集的链接:http://javabook.compuware.com/content/memory/how-garbage-collection-works.aspx

关于Java - 替换堆内存中的现有对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17149421/

相关文章:

java - 为什么 dequeue() 花费如此多的处理器时间?

java - VisualVM CPU 分析是否适用于 Mac?

java - 即使 bean 已初始化,@Required 也会导致异常

Java堆内存流程

c - C 中的数组及其指针

java - 无法访问的对象不是从堆中收集的垃圾

java - VisualVM 堆转储 OQL 渲染对象内的数组

java - 如何在没有新 Activity 的情况下创建子菜单?安卓编程

java - ObjectClass.class 变量在哪里定义/初始化?

java - 二十一点游戏的逻辑