在运行时设置JVM堆大小
问题内容:
有没有办法从正在运行的Java程序中设置堆大小?
问题答案:
没有。
对于具有非常多的堆需求的应用程序,您可以做的是设置最大的堆大小-Xmx并进行调整-XX:MaxHeapFreeRatio
,-XX:MinHeapFreeRatio
以使堆缩小时该应用程序不会挂在大量内存上(使用默认设置即可) )。
但是请注意,当应用程序实际使用的内存变化剧烈且快速时,这可能会导致性能问题-在这种情况下,最好将其挂在所有内存上,而不是仅将其退还给操作系统以声明使用它再过一秒钟。您可能还想弄弄GC选项,以确保GC不会在周围留下过多的无人认领的对象,当堆有很大的增长空间时,GC往往会这样做,这会破坏目标希望堆大小能够适应应用程序的需求。