背景
我最近编写了一个消耗指定数量MB的java应用程序。我有目的地这样做,看看另一个Java应用程序如何对特定的RAM负载做出反应(我确信有这个目的的工具,但这是最快的)。内存消费者应用程序非常简单。我输入我想要消耗的MB数,并创建一个包含许多字节的向量。我还有一个重置按钮,可以删除向量的元素并提示输入新的字节数。
问题
我注意到,清除向量后,java进程的堆大小永远不会减少。我试过clear(),但堆仍然是相同的大小。看起来堆随着元素一起增长,但即使删除了元素,大小仍然存在。 java代码中有没有办法减少堆大小?有关于我缺少的Java堆的详细信息吗?我觉得这是一个重要的问题,因为如果我想在任何Java应用程序中保持较低的内存占用,我需要一种方法来保持堆大小不会增长,或者至少在很长的时间内不会大。
答案 0 :(得分:2)
答案 1 :(得分:0)
您应该使用-Xmx选项提供最大堆大小,并通过app监视内存分配。对具有较短时间生命周期的对象使用弱引用,GC也会自动删除它们。