我正在开发一个clojure应用程序,但它似乎使用的内存比它应该用的多得多。我以为是内存泄漏问题,但在使用jvisualvm检查后发现,GC并没有经常运行。在红色轮廓处,我手动调用了GC。为什么它分配了300mb,而实际使用只有约30mb?
如果你觉得堆太大,可以将其缩小。只有在必要时才会运行GC。
(这些控件随着时间的推移而发生了变化,但我认为它们仍然是以初始堆大小、增量大小和最大大小为单位。如果你的初始堆大小很小,只要没有推动它更高的堆使用的“高水位标记”,它就会保持小。)
-XX:NewSize=60m
。