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 答案和其中提供的链接。
我尝试 运行 一个 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 答案和其中提供的链接。