【发布时间】:2014-04-19 14:12:50
【问题描述】:
我正在编写一个 Java 程序,在执行过程中的某个时间点,我想更改 JVM 设置(减少堆),并在一段时间后再次增加它。 Java可以吗?
【问题讨论】:
-
我能问一下为什么你想这样做吗?
标签: java jvm jvm-arguments
我正在编写一个 Java 程序,在执行过程中的某个时间点,我想更改 JVM 设置(减少堆),并在一段时间后再次增加它。 Java可以吗?
【问题讨论】:
标签: java jvm jvm-arguments
长话短说:你不能。运行后堆大小是固定的,无法从代码中修改它。
【讨论】:
我认为这是不可能的,但您当然可以使用 -Xmx 或 -Xms 来控制堆。 您还可以使用:-XX:MaxHeapFreeRatio:这是在 GC 收缩之前空闲堆的最大百分比(如果我没记错的话,默认为 70)。
提供一个小的 -Xms 将使堆增长(如果需要并且将涉及完整的 GC)并且也可以收缩。
一般来说,人们会尽量避免这种缩小和增长,因为它涉及到海鸥 GC,也就是世界末日事件,会减慢你的速度。
【讨论】: