Jetty 9 + Java> 8u74总是在Linux上分配最大(-Xmx)内存?

时间:2016-11-25 14:55:48

标签: java-8 jetty-9

如果我使用-Xmx512m在Linux上使用jre 8u74启动Java应用程序,则不立即分配内存,如果Java需要,则分配内存。因此,如果没有必要,它可以保持低于512 MB的限制。这就是我所期望的。

在Java 8u111上我得到了另一种行为,即使Java不需要,也会立即将512 MB内存分配给进程。这很烦人,因为即使Java不需要它也不能被其他进程使用。

我看了Java jre的发行说明,从8u74开始直到当前最新的8u111,但我找不到任何关于内存分配策略变化的参考。

有人可以在Java 8范围内确认此分配策略更改吗? 是否有选项可以使用以前的内存分配行为?

编辑1 - -XX:+ PrintFlagsFinal差异(由8472建议)

diff java-info-8u111.txt java-info-8u74.txt 
161d160
<      bool CrashOnOutOfMemoryError                   = false                               {product}
199d197
<      bool ExitOnOutOfMemoryError                    = false                               {product}
636d633
<      bool UseCountedLoopSafepoints                  = false                               {C2 product}
666,668d662
<      bool UseMontgomeryMultiplyIntrinsic            = false                               {C2 product}
<      bool UseMontgomerySquareIntrinsic              = false                               {C2 product}
<      bool UseMulAddIntrinsic                        = false                               {C2 product}
698d691
<      bool UseSquareToLenIntrinsic                   = false                               {C2 product}
729,731c722,724
< java version "1.8.0_111"
< Java(TM) SE Runtime Environment (build 1.8.0_111-b14)
< Java HotSpot(TM) 64-Bit Server VM (build 25.111-b14, mixed mode)
---
> java version "1.8.0_74"
> Java(TM) SE Runtime Environment (build 1.8.0_74-b02)
> Java HotSpot(TM) 64-Bit Server VM (build 25.74-b02, mixed mode)

编辑2 - 相关问题

编辑3 - 解决方案

问题与Java8 / 9和Jetty9的组合有关。解决方法是注释掉Jetty annotations.mod的内容。请参阅this related question.的完整答案 感谢所有建议和新的调试思路。

0 个答案:

没有答案