我正在做一个快速的实验,看看我的算法的内存性能如何。 输入大约为2 Mb,算法运行大约需要1秒。 我在循环中运行了500次,以便能够查看内存分配。
这是jConsole显示内存使用情况的方式:
正如您所看到的那样,在GC启动之前,每两次堆内存使用量会增加(有点指数)(即使输入相同)。
有人知道这是否是预期的以及为什么会发生这种情况?它是由JVM完成的一些优化吗?
谢谢!
答案 0 :(得分:3)
有人知道这是否是预期的以及为什么会发生这种情况?它是由JVM完成的一些优化吗?
JVM正在努力减少GC-ing所花费的时间。如果你使用更多内存,它就不会经常使用GC。
泄漏?
如果你看一下GC之后的内存使用情况,它就会大致相同,所以很明显它没有内存泄漏。或者至少不是一个大的。
你必须查看Full GCs之后使用的内存,以确认存在内存泄漏,我认为这些是次要集合。