在运行时设置 JVM 堆大小

2022-08-31 15:43:11

有没有办法从正在运行的Java程序设置堆大小?


答案 1

不。

对于具有非常可变的堆要求的应用,您可以执行的操作是使用和调整将最大堆大小设置得非常高,以便应用在堆收缩时不会挂起大量内存(它使用默认设置执行此操作)。-Xmx-XX:MaxHeapFreeRatio-XX:MinHeapFreeRatio

但请注意,当应用程序实际使用的内存变化强烈而快速时,这可能会导致性能问题 - 在这种情况下,您最好让它挂在所有内存上,而不是将其返回给操作系统,只是在一秒钟后再次声明它。您可能还希望摆弄 GC 选项,以确保 GC 不会留下太多无人认领的对象,当堆增长的空间很大时,它往往会这样做,并且这会破坏希望堆大小适应应用需求的目标。


答案 2

根据 http://www.dreamincode.net/forums/showtopic96263.htm,您无法在运行时执行此操作,但可以生成具有不同堆大小的另一个进程。


推荐