我可以在执行期间更改JVM参数吗?

时间:2014-03-14 10:28:51

标签: java jvm jvm-arguments

我正在编写一个Java程序,并且在执行期间的某个时刻我想要更改JVM设置(减少堆),并在一段时间后再次增加它。是否可以使用Java?

2 个答案:

答案 0 :(得分:1)

长话短说:你不能。堆运行后,堆大小是固定的,并且无法从代码中修改它。

答案 1 :(得分:1)

我认为这不可行,但您当然可以使用 -Xmx -Xms 来控制堆。 您还可以使用: -XX:MaxHeapFreeRatio :这是在GC缩小之前空闲的堆的最大百分比(默认为70,如果我没有记错)。

给一个小的-Xms将使堆增长(如果需要并且将涉及一个完整的GC)并且也可以缩回。

一般来说,人们会尽量避免这种萎缩和增长,因为它涉及到一个海鸥GC,也就是世界各地的事件,这会减慢你的速度。