- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在 alpine-OpenJDK 镜像中运行 Springboot 应用程序,并面临 OutOfMemory 问题。最大堆的上限为 256MB。我尝试将 MaxRAMFraction 设置更新为 1,但没有看到它反射(reflect)在 Java_process 中。我可以选择将容器内存限制增加到 3000m,但更愿意使用 MaxRamfraction=1 的 Cgroup 内存。有什么想法吗?
Java-Version
openjdk version "1.8.0_242"
OpenJDK Runtime Environment (IcedTea 3.15.0) (Alpine 8.242.08-r0)
OpenJDK 64-Bit Server VM (build 25.242-b08, mixed mode)
bash-5.0$ java -XX:+PrintFlagsFinal -version | grep -Ei "maxheapsize|MaxRAMFraction"
uintx DefaultMaxRAMFraction = 4 {product}
uintx MaxHeapSize := 262144000 {product}
uintx MaxRAMFraction = 4 {product}
openjdk version "1.8.0_242"
OpenJDK Runtime Environment (IcedTea 3.15.0) (Alpine 8.242.08-r0)
OpenJDK 64-Bit Server VM (build 25.242-b08, mixed mode)
Container Resource limits
ports:
- containerPort: 8080
name: 8080tcp02
protocol: TCP
resources:
limits:
cpu: 350m
memory: 1000Mi
requests:
cpu: 50m
memory: 1000Mi
securityContext:
capabilities: {}
最佳答案
Max heap is being capped at 256MB.
你的意思是通过docker中的-m
?如果是这样,这不是您指定的 java 堆,而是总内存。
I tried updating the MaxRAMFraction setting to 1
MaxRAMFraction
已弃用且未使用,忘记它吧。
UseCGroupMemoryLimitForHeap
已弃用并将被删除。还可以使用已移植到 java-8 的 UseContainerSupport
。
MaxRAM=2g
你知道这实际上是做什么的吗?它设置 JVM 认为您拥有的“物理”RAM 的值。
我假设您没有故意在这里设置-Xms
和-Xmx
?因为您不知道容器将有多少内存?如果是这样,我们就处于同样的境地。我们确实知道我们将获得的最小值是1g
,但我不知道最大值,因此我不喜欢显式设置-Xms
和-Xmx
。
相反,我们这样做:
-XX:InitialRAMPercentage=70
-XX:MaxRAMPercentage=70
-XX:+UseContainerSupport
-XX:InitialHeapSize=0
就是这样。这是做什么的?
InitialRAMPercentage
用于计算初始堆大小,但仅当 InitialHeapSize/Xms
缺失时才使用。 MaxRAMPercentage
用于计算最大堆。不要忘记,java 进程不仅仅需要仅仅 堆
,它还需要 native 结构;这就是为什么 70
(%)。
关于java - OpenJDK 1.8.0_242,MaxRAMFraction 设置未反射(reflect),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60198036/
我正在 alpine-OpenJDK 镜像中运行 Springboot 应用程序,并面临 OutOfMemory 问题。最大堆的上限为 256MB。我尝试将 MaxRAMFraction 设置更新为
Java 8/9 带来了对 -XX:+UseCGroupMemoryLimitForHeap 的支持(使用 -XX:+UnlockExperimentalVMOptions)。这会将 -XX:MaxR
我是一名优秀的程序员,十分优秀!