V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Aliberter
V2EX  ›  程序员

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

  •  
  •   Aliberter · 2022-02-10 16:36:05 +08:00 · 1786 次点击
    这是一个创建于 1024 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    9 条回复    2022-02-16 16:15:49 +08:00
    cweijan
        1
    cweijan  
       2022-02-10 16:39:06 +08:00   ❤️ 1
    肯定会被 Docker 设置的内存限制, 堆外内存只是申请不受 JVM 限制的内存, 如果系统内存不足, 那也申请不了.
    Tenlearn
        2
    Tenlearn  
       2022-02-10 16:39:19 +08:00
    docker
    tanxnative
        3
    tanxnative  
       2022-02-10 16:39:32 +08:00   ❤️ 1
    可以理解为: 使用容器的部分内存,堆外内存 != 超出 cgroup 的限制的内存
    liprais
        4
    liprais  
       2022-02-10 16:39:35 +08:00
    docker 哪有自己的内存....
    ikas
        5
    ikas  
       2022-02-10 16:40:30 +08:00   ❤️ 3
    新版本的 jdk8 或者更高的版本已经内置了容器支持..
    具体可以搜索 -XX:+UseContainerSupport -XX:MaxRAMPercentage 了解更多
    wzcloud
        6
    wzcloud  
       2022-02-10 22:51:37 +08:00   ❤️ 1
    "堆外"内存是相对 JVM 的堆来说的,其实是容器的"内存",堆内存+堆外内存不能超过容器的内存限制.
    个人理解.
    SmiteChow
        7
    SmiteChow  
       2022-02-11 10:13:13 +08:00
    禁止套娃
    Rorysky
        8
    Rorysky  
       2022-02-11 14:21:52 +08:00
    docker 本身资源隔离 了 网络 内存 cpu 分片
    qingshuang
        9
    qingshuang  
       2022-02-16 16:15:49 +08:00
    印象里 jdk8 为了支持 docker 专门做了次升级 之后才能识别出 docker 的内存限制
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2632 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 11:13 · PVG 19:13 · LAX 03:13 · JFK 06:13
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.