InitialHeapSize java 设置为零,但应用程序 运行,这是怎么回事?

InitialHeapSize java is set to Zero and yet the application run, How is that?

我尝试 运行 一个 java 应用程序,在一个由 k8s 编排的 docker 中使用这个 jvm 选项:

-XX:InitialHeapSize=0 -XX:InitialRAMPercentage=0 -XX:MaxRAMPercentage=80

这是我对 cpu 和内存的限制:

resources:
          limits:
            cpu: 900m
            memory: 900M
          requests:
            cpu: 900m
            memory: 900M

当我申请更改时,应用程序 运行 甚至我给她一个 0 InitialRAMPercentage 和 0 XX:InitialHeapSize。

当我进入我的吊舱时 运行 ps ax

给我这个:

PID TTY      STAT   TIME COMMAND
    1 ?        Ssl    0:53 java -XX:InitialHeapSize=0 -XX:InitialRAMPercentage=0 -XX:MaxRAMPercentage=80 

据我了解,当我将 0 作为百分比传递时,应用程序将不会 运行 因为没有允许的内存。真的吗 ?

你有什么解释吗?

初始堆大小只是告诉 JVM 起始堆大小,它会根据需要增加它(直到达到最大堆大小)。同样巧合的是,将初始大小设置为0与根本不设置一样,让JVM自己判断起始堆大小。

例如参见 [​​=10=] SO 答案和其中提供的链接。