Java堆大小减少

时间:2016-01-19 19:25:29

标签: java memory memory-management heap-dump

背景

我最近编写了一个消耗指定数量MB的java应用程序。我有目的地这样做,看看另一个Java应用程序如何对特定的RAM负载做出反应(我确信有这个目的的工具,但这是最快的)。内存消费者应用程序非常简单。我输入我想要消耗的MB数,并创建一个包含许多字节的向量。我还有一个重置按钮,可以删除向量的元素并提示输入新的字节数。

问题

我注意到,清除向量后,java进程的堆大小永远不会减少。我试过clear(),但堆仍然是相同的大小。看起来堆随着元素一起增长,但即使删除了元素,大小仍然存在。 java代码中有没有办法减少堆大小?有关于我缺少的Java堆的详细信息吗?我觉得这是一个重要的问题,因为如果我想在任何Java应用程序中保持较低的内存占用,我需要一种方法来保持堆大小不会增长,或者至少在很长的时间内不会大。

2 个答案:

答案 0 :(得分:2)

通过拨打System.gc()

来尝试垃圾回收

这可能会对您有所帮助 - When does System.gc() do anything

不建议广泛调用GC。

答案 1 :(得分:0)

您应该使用-Xmx选项提供最大堆大小,并通过app监视内存分配。对具有较短时间生命周期的对象使用弱引用,GC也会自动删除它们。

相关问题