OpenJ9 和 docker 容器?

标签 openj9

从历史上看,HotSpot 在 docker 容器中运行错误判断分配的资源(例如 RAM)的记录很差。不过,情况正在慢慢好转。

OpenJ9 如何与 docker 容器保持一致,以及它在多大程度上了解容器提供的资源(内存、套接字、线程等)?

此外,在 JavaOne 2017 演讲中提到 OpenJ9 可以跨不同的 OpenJ9 VM 缓存 jit 编译的类。当虚拟机被限制在不同的容器(或)如果容器化的 JVM 共享一个 docker 卷时,这种共享缓存是否可行?

最佳答案

  • 容器支持目前正在研究中,对于 cgroup 意识,请查看此 PR .这也将导致添加容器支持。
  • 对于共享类缓存 (SCC),这两种情况都是可能的。请参阅 here 中的“使用类数据共享功能”以共享 docker 卷为例。当 JVM 被限制在没有共享卷的不同容器中时,建议使用预先构建的 SCC 构建 docker 容器。您的 dockerfile 将如下所示。

    FROM 采用openjdk/openjdk9-openj9:x86_64-alpine-jdk-9.181

    运行 mkdir/opt/shareclasses
    && mkdir/opt/app

    复制 japp.jar/opt/app

    CMD ["java", "-Xshareclasses:cacheDir=/opt/shareclasses", "-jar", "/opt/app/japp.jar"]

  • 然后,您需要构建和运行镜像并提交生成的容器并将其作为您的基本镜像。
    docker build -t japp:latest . docker run japp docker commit container_id japp

    关于OpenJ9 和 docker 容器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46783329/

    相关文章:

    java - OpenJ9 是否支持 sun.misc.Contished 注释?

    java - 调用 j9port_startup_library 时发生访问冲突

    java - 非标准 Java 安装错误地报告了默认语言环境

    java - 无法使用 Eclipse OpenJ9+181 构建 OpenJFX

    java - SpringBoot openJ9 Kubernetes崩溃InterpreterEmulator.cpp:208

    java - install4j:如何为启动器使用备用 jvm

    java 14 nullpointerexception 没有详细信息

    lombok - 使用 OpenJ9 和 Lombok 进行 Maven 编译失败