其他答案是正确的:Java将使用允许的尽可能多的内存,这时它将进行垃圾回收。要解决此问题,可以在JVM设置中指定较小的最大堆大小。您可以使用-
Xmx设置来执行此操作。例如,如果您认为只需要32MB,则将其运行为:
java -Xmx32M [your main class or jar here]
程序的堆(非堆栈内存)不会占用超过32MB的内存,但是如果一次需要的内存超过该内存的话,它将崩溃(这是您需要剖析的地方)。不过,我在程序中看不到任何明显的泄漏(假设ImageIO不需要任何清理),所以我认为您会没事的。



