我知道 Java VM 有“-XMx”和“-XMs”来设置堆的大小。它还有一个叫做“人机工程学”的特性,可以智能地调整堆的大小。但是,我手头有一个问题,需要严格固定大小的堆。
这是命令行参数:
"-Xms2m -Xmx2m -XX:+PrintGCDetails"
但是,通过观察 GC 日志,似乎堆的大小并没有固定在 2048K。参见,例如 2368K、2432K、2176K 等:
[GC [PSYoungGen: 480K->72K(704K)] 1740K->1332K(2368K), 0.0032190 secs] [Times: user=0.00 sys=0.00, real=0.01 secs]
[GC [PSYoungGen: 560K->64K(768K)] 2094K->1598K(2432K), 0.0033090 secs] [Times: user=0.00 sys=0.00, real=0.01 secs]
[GC [PSYoungGen: 544K->32K(768K)] 1675K->1179K(2176K), 0.0009960 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
有没有办法对 Java 堆进行“严格的 大小调整”(不多不少)?