jvm 某个组件设置的使用堆外内存,但是 jvm 又部署在 docker 里,那这个堆外内存此时到底是什么?

2022-02-10 16:36:05 +08:00
 Aliberter

是还会被限制在 docker 内的内存,还是会使用上物理机( docker 宿主机)的内存?

1594 次点击
所在节点    程序员
9 条回复
cweijan
2022-02-10 16:39:06 +08:00
肯定会被 Docker 设置的内存限制, 堆外内存只是申请不受 JVM 限制的内存, 如果系统内存不足, 那也申请不了.
Tenlearn
2022-02-10 16:39:19 +08:00
docker
tanxnative
2022-02-10 16:39:32 +08:00
可以理解为: 使用容器的部分内存,堆外内存 != 超出 cgroup 的限制的内存
liprais
2022-02-10 16:39:35 +08:00
docker 哪有自己的内存....
ikas
2022-02-10 16:40:30 +08:00
新版本的 jdk8 或者更高的版本已经内置了容器支持..
具体可以搜索 -XX:+UseContainerSupport -XX:MaxRAMPercentage 了解更多
wzcloud
2022-02-10 22:51:37 +08:00
"堆外"内存是相对 JVM 的堆来说的,其实是容器的"内存",堆内存+堆外内存不能超过容器的内存限制.
个人理解.
SmiteChow
2022-02-11 10:13:13 +08:00
禁止套娃
Rorysky
2022-02-11 14:21:52 +08:00
docker 本身资源隔离 了 网络 内存 cpu 分片
qingshuang
2022-02-16 16:15:49 +08:00
印象里 jdk8 为了支持 docker 专门做了次升级 之后才能识别出 docker 的内存限制

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/832986

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX