【发布时间】:2016-04-25 10:18:19
【问题描述】:
背景
我最近编写了一个消耗指定数量 MB 的 java 应用程序。我这样做是有目的的,以查看另一个 Java 应用程序如何对特定的 RAM 负载做出反应(我确信有用于此目的的工具,但这是最快的)。内存消费者应用程序非常简单。我输入我想要消耗的 MB 数并创建一个包含那么多字节的向量。我还有一个重置按钮,用于删除向量的元素并提示输入新的字节数。
问题
我注意到,一旦向量被清除,java 进程的堆大小就不会减少。我尝试了 clear(),但堆的大小保持不变。看起来堆随着元素而增长,但即使元素被删除,大小仍然存在。 java代码中有没有办法减少堆大小?是否有关于我缺少的 java 堆的详细信息?我觉得这是一个重要的问题,因为如果我想在任何 Java 应用程序中保持较低的内存占用,我需要一种方法来防止堆大小在很长一段时间内增长或至少不会变大。
【问题讨论】:
-
你看过了吗:stackoverflow.com/questions/4952568/…。关于java堆大小控制有一些注意事项。
-
GC只在需要节省CPU消耗的时候运行。如果每次释放一些内存时都运行它,那么您的应用程序会非常慢。
-
有道理....感谢您的建议!
标签: java memory memory-management heap-dump